0

我正在尝试创建一个与吉他英雄结构相似的游戏。形状在屏幕的左侧创建,并在右侧的“命中区域”设置动画。这个想法显然是形状在歌曲中的正确点到达命中区域。

我目前正在计算每个形状应该到达命中区域的确切时间,我知道形状在屏幕上显示动画需要 4 秒。

基本上,在歌曲的开头,我使用 TweenMax 延迟调用歌曲开头所需的每个形状。我使用的延迟已预先计算为形状动画所需的时间减去动画时间。

TweenMax.delayedCall(1, createShape, [params]);
TweenMax.delayedCall(3, createShape, [params]);
TweenMax.delayedCall(5.5, createShape, [params]);
TweenMax.delayedCall(11, createShape, [params]);
TweenMax.delayedCall(17, createShape, [params]);

ETC...

显然我正在使用一个循环,我正在从 xml 文档中提取延迟和所有其他信息。

我想有一种更好的方法可以做到这一点,但我已经搜索过并且找不到任何东西。

任何帮助,将不胜感激。

4

1 回答 1

0

如果您不打算使用 TweenMax.killDelayedCallsTo,则可能没有理由使用 TweenMax.delayedCall 而不是 flash.utils.setTimeout :)

setTimeout(createShape, 5500 /* ms */, param1, param2, param3);

也就是说, setTimeout 在任何方面都不是真的“更好”。如果这是您使用 TweenMax 的唯一地方,您只能赢得一些 swf 大小的字节。

另一种方法是将您的歌曲放在 FLV 中(没有视频)并使用提示点创建形状。IMO 这与您的方法相比没有真正的优势,除非您在线播放歌曲并且用户连接导致暂停(在这种情况下,体验很糟糕)。

于 2013-10-09T14:37:28.097 回答