Я создаю фрагмент анимации с использованием EaselJS и сталкиваюсь с проблемой наследования Inheritance при попытке объявить объекты многократного использования.EaselJS Inheritance - рефакторинг для объявления единой анимации
Например, в моей части анимации я хочу нарисовать несколько монет в разных точках на холсте, а затем оживить указанную монету.
Это как мой код выглядит на данный момент:
(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);
}
Теперь уточнить - этот кусок кода делает работу - однако я чувствую, что это может быть лучше выполнена. В идеале я хотел бы иметь возможность объявить функцию, которую запускает event-приемник один раз (например, как у меня c.initialize, c.animate). Моя проблема в том, когда я делаю это изменение, анимация теряет экземпляр «этого», и я больше не могу найти конкретный экземпляр монеты для анимации на основе ее свойств.
Любые идеи разработчиков-разработчиков?