我正在尝试创建一个与吉他英雄结构相似的游戏。形状在屏幕左侧创建,并在右侧显示“命中区域”。这个想法显然是形状在歌曲的正确位置到达击中区域。
我目前正在计算每个形状应该到达命中区域的确切时间,意识到形状需要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]);
等...
显然我正在使用循环,我正在从xml doc中提取延迟和所有其他信息。
我认为有更好的方法可以做到这一点,但我已经搜索过,无法找到任何东西。
任何帮助都将不胜感激。
答案 0 :(得分:0)
如果你不打算使用TweenMax.killDelayedCallsTo,可能没有理由在flash.utils.setTimeout上使用TweenMax.delayedCall:)
setTimeout(createShape, 5500 /* ms */, param1, param2, param3);
那就是说,setTimeout在任何方面都不是真的“更好”。如果这是您使用TweenMax的唯一地方,则只能以swf大小赢取一些字节。
另一种方法是将歌曲放在FLV中(没有视频)并使用提示点来创建形状。 IMO这与你的方法相比没有什么优势,除非你在线播放歌曲并且用户连接导致暂停(在这种情况下,体验很糟糕)。