【问题标题】:CreateJS : Listen for particular frame in Sprite animation or obtain frame label index?CreateJS:监听 Sprite 动画中的特定帧或获取帧标签索引?
【发布时间】:2015-06-02 04:56:35
【问题描述】:

是否有任何 API 可以在 CreateJS 中的 Sprite 动画期间侦听特定帧?有一种方法可以在 Flash 影片剪辑中的特定帧触发事件,但不确定如何在 CreateJS 中执行此操作。

我可以通过在 Sprite 动画时监听它的 change 事件来实现这一点,检查每个事件的 currentFrame,检查帧索引是否是我想要做出反应的那个,但是,这似乎相当费力,并且意味着我必须硬编码到索引而不是框架标签。

有趣的是,Sprite 的 _animations 属性似乎是私有的,所以虽然我可以使用这个属性来确定动画的长度,但仍然需要硬编码为索引值。 (出于好奇,为什么没有 mySprite.length() API?Flash 的 MovieClip 有许多帧属性...)。

有没有办法在 CreateJS 中制作框架标签? In the docs here,可以看到使用:

instance.gotoAndStop("frameName");

...但我没有看到任何关于如何在 SpriteSheet 中为特定动画序列设置帧标签,或如何检索与帧标签关联的帧索引的文档.

感谢您的帮助!

【问题讨论】:

    标签: label sprite frame createjs


    【解决方案1】:

    gotoAndStopgotoAndPlay 方法都允许帧编号或动画名称(不是帧名称)。您可以在创建 SpriteSheet 时标记动画,但您不能在动画中创建命名关键帧。

    要确定关键帧,您可以检查主刻度功能上的currentAnimationFrame (doc),或从 Sprite 监听 change 事件 (doc)。

    sprite.on("tick", function() {
        if (sprite.currentAnimationFrame == 10) { 
            // do something
        }
    });
    

    请注意,根据您的应用帧速率,您可能需要存储前一帧,并检查播放头是否通过某个帧,因为 EaselJS 可能会根据播放速度跳过帧。

    --

    length 属性是个好主意,但它可能必须是您传入动画名称的方法。我在 EaselJS GitHub 上记录了 issue

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 2014-03-17
      • 2012-04-29
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2021-07-22
      • 2022-12-07
      • 1970-01-01
      相关资源
      最近更新 更多