laya 学习备忘(持续更新)
1.默认的name
把一个图片的name命名为mask,真的就遮罩了
类似的还有list的cell中如果出现selected作为name的图片,会自动做为选中状态
同样以btn开头的,会解析为Button
2.作用域
node.on(Event.CLICK, null, resizeHandler, [node]);
注意作用域为null时resizeHandler方法取不到本类中的变量
3.DISPLAY和UNDISPLAY事件
node.as:
/**表示是否在显示列表中显示。是否在显示渲染列表中。*/
public function get displayedInStage():Boolean {
return _displayedInStage;
}
/** @private */
public function _setDisplay(value:Boolean):void {
if (_displayedInStage !== value) {
_displayedInStage = value;
if (value) event(Event.DISPLAY);
else event(Event.UNDISPLAY);
}
}
4.查看源码,可以看到对内存泄露的推荐处理方式
public function set target(value:Sprite):void {
if (_target) {
_target.off(Event.MOUSE_WHEEL, this, onTargetMouseWheel);
_target.off(Event.MOUSE_DOWN, this, onTargetMouseDown);
}
_target = value;
if (value) {
_mouseWheelEnable && _target.on(Event.MOUSE_WHEEL, this, onTargetMouseWheel);
_touchScrollEnable && _target.on(Event.MOUSE_DOWN, this, onTargetMouseDown);
}
}
5.在AS中,如果运行到某些else分支,需要进入Debug,可以使用
try {
effectNode = this._effectFunction.runWith(key);
var order = Number(effectLayer.order);
this.cocosAddChildAt(effectNode, order);
if (order == 0) Laya.timer.callLater(this, updateZOrder);
this._effectNodes[key] = effectNode;
} catch(error : Error) {
//__JS__("debugger")
debugger;
}
6.VISIBILITY_CHANGE
舞台可见性发生变化时调度(比如浏览器或者当前标签被切换到后台后调度),使用Laya.stage.isVisibility可以获取当前是否处于显示状态
7.Laya.stage.frameRate = Laya.Stage.FRAME_MOUSE;
/**全速模式,以60的帧率运行。*/
public static const FRAME_FAST:String = "fast";
/**慢速模式,以30的帧率运行。*/
public static const FRAME_SLOW:String = "slow";
/**自动模式,以30的帧率运行,但鼠标活动后会自动加速到60,鼠标不动2秒后降低为30帧,以节省消耗。*/
public static const FRAME_MOUSE:String = "mouse";
/**休眠模式,以1的帧率运行*/
public static const FRAME_SLEEP:String = "sleep";
8.layaCanvas后面再放一个canvas时,会出现遮挡。这时候使用Laya.stage.bgColor = "none";
是不够的,还需要在前面加上
Config.isAlpha = true;
// 不支持WebGL时自动切换至Canvas
Laya.init(800, 600,WebGL);
isAlpha这个属性,参见源码:
/**
* 设置画布是否透明,只对2D(WebGL)、3D有效。
*/
public static var isAlpha:Boolean = false;
9.getAttribute
let layaCanvas = document.getElementById("layaCanvas");
layaCanvas.getAttribute("height")
10.IDE
打开文件菜单,新建窗口,可以实现双开
如果大家安装的Typescript版本不一致,会出现生成的js文件不一致。可以使用tsc -v来查看版本。
使用npm update -g typescript即可升级到最新版本
也可以通过在后面加版本号的方式安装指定版本,如npm install -g typescript@2.7.1
11.做了一个遮罩页面,去挡住下方的页面不响应事件。设置了宽高,也设置了mouseEnabled,但是却无效。检查了一下,mouseEnabled设置给遮罩sprite是不行的,需要设置给整个view
12.注意变量类型。在复制别的项目代码时,函数方法参数出现xxx:number = null这样的默认值,但是在手写逻辑时,判断参数,是以if(xxx != 0)这样的条件来判断的,这就出现bug(耽误了1小时……)
13.虚拟摇杆
参考【咸鱼教程】虚拟摇杆 , 以及作者其他分享项目
laya demo fairygui joystick
end