Я хочу добавить некоторый следный эффект к движущемуся объекту, который будет исчезать с течением времени. Это то, что я получил до сих пор:Как изменить цвет спрайта с течением времени в melonJS
game.Trail = me.Entity.extend({
init:function (x, y, settings)
{
this._super(me.Entity, 'init', [
x, y,
{
image: "ball",
width: 32,
height: 32
}
]);
(new me.Tween(this.renderable))
.to({
alpha : 0,
}, 5000)
.onComplete((function() {
me.game.world.removeChild(this);
}).bind(this))
.start();
},
update : function (dt) {
this.body.update(dt);
return (this._super(me.Entity, 'update', [dt]) || this.body.vel.x !== 0 || this.body.vel.y !== 0);
}
});
Demo (перемещение с WASD или клавиши со стрелками)
Вот a link to the full project для проверки на месте.
Но я хочу изменить цвета элементов в трейле так же, как и затухание.
В phaser это можно сделать tinting спрайт, но я понятия не имею, как добиться этого на melonjs.
Примечание: если эффект может быть сделан с основными формами вместо изображений, которые будут работать.
Это прекрасно работает. Но зачем нужен вызов this._super ...? Я думаю, что это работает без этой строки (проверьте мою ссылку на отредактированный ответ). – chipairon
@chipairon Технически существование метода «draw» в подклассе полностью переопределяет метод в суперклассе (с точки зрения классического наследования). Метод 'draw' в классе' me.Entity' выполняет всю работу чертежа, поэтому, если вы забудете назвать этот метод суперкласса, ваш объект не будет нарисован. Вот документация для классического наследования melonJS: http://melonjs.github.io/melonJS/docs/me.Object.html и библиотека, на которой она основана: https://github.com/parasyte/jay-extend #this_super –
Кроме того, ваша сущность в [jsfiddle demo] (https://jsfiddle.net/ruben_diaz/33pca05u/) не имеет спрайта. Метод 'draw' на суперклассе в этом конкретном случае не является op-op. –