2012-09-02 32 views
2

所以,CreateJS:无法获取渐变工作

我刚开始学习CreateJS,我遇到了我的第一个问题:我不能得到渐变的工作(如我期望它应该工作)。

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

我想,云从右边移到左边 - 它只是跳转到目标的时刻。

的代码如下:

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

其中createjs.Tween.get(stack["cloud"])是有效的,并执行功能test。但是,根本没有发生1000毫秒的视觉效果。

我已经看过了教程,这是事情应该如何工作,但他们不是。我究竟做错了什么?

编辑:,如果我在控制台不同的价值进行重新执行代码,然后补间和视觉效果通常发生(这里的地方的setTimeout使用的版本:http://www.hakoniemi.net/labs/createjs-test/index2.html

回答

2

你必须设置在一个类型的问题在

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

这个问题初始x值是getAttribute()返回一个字符串,你CA n验证输出Object.prototype.toString.call(ref.x)。这样,这似乎是第一次尝试运行它,不能做适当的数学。最后,它将值正确更新为最终值作为数字,这就是为什么下次调用同一个方法可以正常工作的原因。

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

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

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

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

+0

你好,谢谢你的回答。这似乎工作。奇怪的是,这些微不足道的问题不由框架处理:)。 我注意到资产加载和下单的问题,并会用preloaderJS或其他方式解决,谢谢提及寿。 – zvona