2

好吧,我束手无策,我无法让 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);
                    });
                }
            });
        }
4

2 回答 2

5

您正在将补间代码执行绑定到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 中,您以帧而不是毫秒为单位指定持续时间。)

于 2012-07-25T20:56:09.837 回答
1

这更像是一个元答案:-)

首先,我鼓励您升级到最新版本,因为它有很多错误修正。为了让您的代码在新版本下运行,您必须做的一些更改是将所有组件和事件更改为 Pascal 大小写。即 enterframe => EnterFrame、canvas => Canvas 等。

其次,我认为您应该将这些问题带到 Crafty 论坛以获得合适的受众。我发现这个问题的唯一方法是通过谷歌警报。

获得帮助的最佳方式是使用此模板http://jsfiddle.net/mCdUX/62/创建一个 jsfiddle,并使用一个小的运行示例演示您无法开始工作的部分。

哦,欢迎来到狡猾的社区:-)

于 2012-02-04T22:13:04.503 回答