【发布时间】:2014-01-15 18:25:05
【问题描述】:
我正在使用 EaselJS 创建动画片段,但在尝试声明可重用对象时遇到了继承问题。
例如,在我的动画片段中,我想在画布上的不同点绘制多个硬币,然后为所述硬币制作动画。
这就是我的代码现在的样子:
(function() {
var Coin = function(container) {
this.initialize(container);
}
var c = Coin.prototype = new createjs.Container();
c.Container_initialize = c.initialize;
c.initialize = function() {
this.Container_initialize();
var coinInstance = this,
coin = new createjs.Bitmap(loader.getResult('coin'));
createjs.Ticker.addEventListener('tick', function() {
var characterBitmap = character.children[0].children[0];
var coinBitmap = coinInstance.children[0],
collided = ndgmr.checkPixelCollision(characterBitmap, coinBitmap);
if(collided && coinInstance.alpha == 1) {
createjs.Tween.get(coinInstance).to({y: coinInstance.y-100, alpha: 0}, 300);
}
});
this.addChild(coin);
}
window.Coin = Coin;
}());
function drawCoin(container, positionX, positionY) {
var coin = new Coin();
coin.x = positionX;
coin.y = positionY;
container.addChild(coin);
}
现在澄清一下 - 这段代码确实 工作 - 但是我觉得它可以更好地执行。理想情况下,我希望能够声明事件侦听器触发一次的函数(例如,我如何拥有 c.initialize,拥有 c.animate)。我的问题是,当我进行此更改时,动画会丢失“this”的实例,并且我无法再定位硬币的特定实例以根据其属性进行动画处理。
开发者有什么想法吗?
【问题讨论】:
标签: javascript animation easeljs createjs