有时有很多方法可以在 Flash 中实现您的目标。我将为您的项目讨论其中之一。我不会给你所有你需要的东西,但你至少会大致了解要做什么以及要搜索什么术语。
Flash 中的基本思想是您可以通过类似于 Unity 中的 Prefabs 的 MovieClips 来分离事物。影片剪辑有自己的时间线,您可以使用它来控制该影片剪辑中的所有视觉效果(包括嵌套的影片剪辑)。任何代码都可以将这些影片剪辑告知 Play()、Stop()、gotoAndPlay(Frame#) 等,以完全控制要播放该影片剪辑时间线的哪些部分。
您可以使用时间线的不同部分创建几个不同的动画,这些部分都使用您的瓶子图形。其中一部分可能是坐在那里冒泡或其他东西的循环动画。另一部分可以是实际倾倒/倾倒、另一部分连续倾倒和另一部分用于停止倾倒/不倾倒。然后,您可以在另一层添加帧标签以帮助您管理它们,并在另一层上添加停止或“重复”等操作,以便动画在到达其段的末尾时循环或停止。
创建动画后,您可以使用代码调用它们,例如 gotoAndPlay("pouring"),然后您就可以担心 EventListeners。每次发生某些事情时,EventListener 都会调用您创建的函数。如果您为 Key Press 创建一个 EventListener,那么您将需要检查在您编写的函数中按下的特定键。根据按键的不同,您将调用不同的动画和可能的其他功能,例如发出音符声音、液体倾倒声音以及跟踪用户倾倒的“多少”。制作按键按下和按键向上的侦听器通常很有用。
您只需在项目之间拖放即可在项目之间复制您在库中制作的影片剪辑。有时使用库中的文件夹来帮助组织事物很有用,尤其是在项目之间复制时。
搜索教程并在新项目中练习新事物以降低复杂性,直到您确定它是如何工作的以及如何使用它。
多个动画
如果您在时间轴上制作动画并且想要在该时间轴的不同层上播放不同的动画,那么您不仅必须按层分离动画,而且还要按时间水平分离动画。为标签添加一个新图层。为停止操作添加一个新层。在每个动画片段开头的标签层中创建一个帧标签。在每个动画结束的动作层中添加停止命令。现在您已经通过标签和操作定义了起点和终点,是时候使用代码调用它们了。现在您可以引用包含您的动画/图层的影片剪辑并使用 gotoAndPlay("framelabelhere") 命令播放某个动画。
这里的缺点是您的动画是互斥的,这意味着它们必须共享相同的时间线,因此您一次只能播放 1 个。如果您需要并发,则改为通过影片剪辑分隔动画;每个影片剪辑都有自己的时间线,因此可以独立播放。在后一种情况下,您可以使用 myMovieClipInstanceNameHere.play() 开始播放时间线。您可能需要时间线中的初始停止命令,以确保它们不会默认播放。
祝你好运!