我使用EaselJS創建動畫片段,並且在嘗試聲明可重用對象時遇到了繼承問題。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'的實例,我不能再根據它的屬性找到硬幣的具體實例來設置動畫。
任何想法的開發人員?