【问题标题】:CreateJS: Unable to get tweening to workCreateJS:无法让补间工作
【发布时间】:2012-09-02 21:15:58
【问题描述】:

所以,

我刚开始学习 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

【问题讨论】:

    标签: javascript canvas tween createjs


    【解决方案1】:

    在中设置初始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 是在加载资源后立即将资源添加到舞台。如果您的云图像在背景之前加载,它将被放置在其下方,您将无法看到它们。 (以防万一:))

    【讨论】:

    • 您好,感谢您的回答。这似乎有效。很奇怪,框架没有处理这些琐碎的问题:)。我还注意到资产加载和下订单问题,并将使用 preloaderJS 或其他方式解决此问题,谢谢提及。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2020-06-11
    相关资源
    最近更新 更多