好吧,我在我的智慧结束,我不能让CraftyJS做一个补间。
所以我想做的是,每当蘑菇被击中,我想检查蘑菇是否有“答案”组件。如果它存在,我什么都不做。否则,我想要显示一个消失的大红色框。
Crafty.c("Mushroom", {
init: function() {
this.addComponent("collision");
this.collision();
this.onhit("bullet",function(e) {
this.destroy();
e[0].obj.destroy();
if(!this.has("Answer")) {
Crafty.e("2D, Tween, color, canvas")
.attr({alpha: 1.0, x: 170, y: 100, w:300, h:100})
.color("red")
.bind("enterframe", function() { //How do i actually get the box to fade?
this.tween({alpha: 0.5, x: 170, y: 100}, 30);
});
}
});
}
答案 0 :(得分:5)
您正在将tween代码执行绑定到EnterFrame
事件,这将导致补间从每个帧开始。相反,您只想在您创建的实体上调用补间函数,如此
Crafty.e("2D, Tween, color, canvas")
.attr({alpha: 1.0, x: 170, y: 100, w:300, h:100})
.color("red")
.tween({alpha: 0.5, x: 170, y: 100}, 600);
补间功能将在接下来的600毫秒(30帧)内管理自己的EnterFrame
,之后它将触发TweenEnd
事件。
(在Crafty的旧版本中,您以帧而不是ms指定了持续时间。)
答案 1 :(得分:1)
这更像是一个元回答: - )
首先,我会鼓励您升级到最新版本,因为它有很多错误修正。要使代码在新版本下运行,您必须做的一些更改是将所有组件和事件更改为Pascal大小写。那就是enterframe => EnterFrame,canvas =>画布等。
其次,我认为你应该把这些问题带到Crafty论坛,以吸引合适的观众。我发现这个问题的唯一方法是通过谷歌警报。
获得帮助的最佳方法是使用此模板http://jsfiddle.net/mCdUX/62/创建一个jsfiddle,其中包含一个小型运行示例,演示了无法工作的部分。
哦,欢迎来到Crafty社区: - )