EaselJS tick事件delta属性未传播到子级



我刚开始使用EaselJS,我正在遇到我的第一个障碍。我已经扩展了Container对象来创建一个名为Egg:的新类

(function() {
var Egg = function(color, x, y, cY) {
  this.initialize(color, x, y, cY);
}
var e = Egg.prototype = new createjs.Container(); // inherit from Container
e.Container_initialize = e.initialize;
e.initialize = function(color, x, y, cY) {
  this.Container_initialize();
  this.circle = new createjs.Shape();
  this.circle.graphics.beginFill(color).drawCircle(0, 0, 10);
  this.circle.x = x;
  this.circle.y = y;
  this.addChild(this.circle);
  this.changeY = cY;
  this.addEventListener("tick", this.handleTick);
}
e.handleTick = function(event) {
  console.log(event.delta); // undefined!
}
window.Egg = Egg;
}());

我是这样初始化的:

var stage, timeCircle;
function init() {
  stage = new createjs.Stage("gameCanvas");
  timeCircle = new createjs.Shape();
  createjs.Ticker.useRAF = true;
  createjs.Ticker.setFPS(30);
  createjs.Ticker.addEventListener("tick", tick);
  var egg = new Egg("red", 50, 50, 100);
  stage.addChild(egg);
  var egg2 = new Egg("blue", 100, 50, 50);
  stage.addChild(egg2);
}

function tick(event) {
  stage.update(event);
}

在Egg handleTick函数中,当我注销event.delta属性时,我会得到"undefined"。我想,如果我通过stage.update调用传入事件,那么它会传播到stage上的对象吗?

Ticker的刻度事件与DisplayObject(或Stage)的刻度事件略有不同。请参见此处:http://www.createjs.com/Docs/EaselJS/classes/DisplayObject.html#event_tick

因此,在您的情况下,这可能会起作用:

e.handleTick = function(event) {
    console.log(event.params[0].delta);
    //params is all the parameter that you use in stage.update(p1, p2, ...);
}

最新更新