2

所以,

我刚刚开始学习 CreateJS,我遇到了第一个问题:我无法让补间工作(正如我所期望的那样)。

这是示例:http ://www.hakoniemi.net/labs/createjs-test/

我想让那朵云从右向左移动——目前它只跳到目标。

代码看起来:

 createjs.Tween.get(stack["cloud"]).to({"x":25}, 1000).call(test);

wherecreatejs.Tween.get(stack["cloud"])是有效的并且函数test被执行。但是,根本没有发生 1000 毫秒的视觉效果。

我已经浏览了教程,这就是事情应该如何工作的方式,但事实并非如此。我究竟做错了什么?

编辑:如果我在控制台中重新执行具有不同值的代码,则补间和视觉效果会正常发生(这是使用 setTimeout 的版本:http ://www.hakoniemi.net/labs/createjs-test/index2.html )

4

1 回答 1

2

x设置初始值时遇到类型问题

if (this.getAttribute("x")) {
  ref.x = this.getAttribute("x");
}

问题是getAttribute()返回一个字符串,您可以验证输出Object.prototype.toString.call(ref.x). 这样,似乎补间第一次尝试运行它无法进行正确的数学运算。最后,它正确地将值更新为最终值作为一个数字,这就是为什么下一次调用相同的方法可以正常工作的原因。

您可以通过确保 ref.x 是一个数字来解决此问题。例如:

if (this.getAttribute("x")) {
  ref.x = parseInt(this.getAttribute("x"));
}

你可以看到它在这个fiddle中工作。

最后一件事,BitmapImageLoaded 是在加载资产后立即将资产添加到舞台。如果您的云图像在背景之前加载,它将被放置在其下方,您将无法看到它们。(以防万一 :))

于 2012-09-03T00:20:36.727 回答