Laya经验总结

Laya经验总结

简写prototype时与类的顺序很重要

错误

    _p = Player.prototype;
    Laya.class(Player, "Player", _super);

正确

Laya.class(Player, "Player", _super);
_p = Player.prototype;

也就是Laya.class紧跟着构造函数

设置了鼠标事件点击没有反应

  1. 非按钮类型可能未设置.size (也就是width和height)的值。
  2. 填写鼠标事件类型时,如果是字符串,看是否书写正确。
    • Laya.Event.CLICK="click"
  3. 试试冒泡方法,给子对象加事件,看是否有用,如果有用,那就是层级问题 有可能
  4. 在你要点击的对象之上有更高一层可点击内容
    • 可能alpha = 0 需要设置zOrder

在设置中如果出现cannot read / set undefine ;

声明了变量,没有赋值;

var obj;
var name = "cube";
// 想动态给obj设置s属性
obj[name] = 12;
//会报错

好习惯:在声明了变量后直接 赋值空值null ;

var obj = {};

Sprite不显示

  1. 是否addChild
  2. 是否设置pos,或与父级的相对位置最后是否在舞台内
  3. 是否设置了zOder,在背景下边
  4. visible原因
  5. alpha原因

出现关于时间器的问题

Cannot read property '$_TID' of undefined

  1. 重复设置了同一个timer
  2. 清除了没有的timer
  3. timer里的函数未定义

drawTexture和loadImage区别

drawTexture 的图片要预先加载

loadImage===graphics.loadImage

可以接受urlbase64svg的格式

  1. 重复设置了同一个timer
  2. 清除了没有的timer
  3. timer里的函数未定义

Laya.Handler.create和function

主要看API里的看参数的类型

timer: 方法
loop(... , method:Function, ...);
**event:** 监听者
on(... , listener:Function, ...);
**LoaderManager:** 事件处理器
load(..., complete:Handler, ...);

TimeLine问题

  1. 在第一次play后,会记住第一次播放时的前后属性,直接给TimeLine.to()不会更改,只会在后面增加动画
    • 如果要增加的话就要设置reset();
  2. 只要播放不会叠加,清除之前状态播放本次状态;
  3. 多个相同类的可以放进一个数组里控制;

如果出现undefine或can't read属性或函数

  1. 可能在执行此函数之前未定义,早于定义

Animator事件:STOPPED / COMPLETE

  1. Event.STOPPED是指一个动画片段播放完后回调
  2. Event.COMPLETE是指循环动画片段播放完后回调

使用遮罩时,出现黑边

  1. 如果遮罩与遮罩内的图形总长大于2048时会有问题,而且特别消耗性能,请慎用
    • console会报大于2048不会放于缓存中

保存JS中JSON或TXT或图片等到本地

引入 FileSaver.js或FileSaver.min.js

来源

GitHub
中文介绍

下载JSON

var blob = new Blob([JSON.stringify(data)], { type: "" });
saveAs(blob, "hello.json");

下载TXT

var blob = new Blob([JSON.stringify(data)], {
type: "text/plain;charset=utf-8"
});
saveAs(blob, "hello.txt");

评论