ActionScript 2 - 获取 MovieClips 的初始位置并为每个 mc 保存它以用于以后的目标位置

ActionScript 2 - Get MovieClips' initial position and save it for each mc for later target position

我正在 AS2 中制作一个动画,它要求所有文本 MovieClip(以 "txt_" 开头的实例名称)最初将手动放置在舞台上,我需要存储它们自己的初始放置位置(x, y) 所以当我想将它们动画化到这些相同的最终坐标时,无论它们同时移动到哪里,它们都可以在以后检索。

因此需要执行以下步骤:

  1. 所有这些文本动画片段都是从库中手动(不是动态地)放置在舞台上,匹配它们预期的目标关键帧结束位置 (x,y) 以获得所需的最终屏幕布局。
  2. 然后帧脚本在舞台上循环遍历所有这些 MovieClip 实例,然后在舞台上渲染它们并存储它们的初始(也是未来目标)(mc.targetPosX 或 mc.targetPosY)位置。
  3. 然后框架脚本还会移动所有这些 MovieClip 实例,然后再将它们渲染到舞台上,并 moves/offsets 它们在舞台上的其他地方(例如 mc._x +=25px;)并隐藏它们(例如 mc._alpha =0;)
  4. 最后,通过使用像 Greensock 这样的补间,我想使用它们存储的目标结束位置将它们中的每一个动画化到它们存储的最终目标位置。 (例如 TweenLite.to(mc, 1,{_alpha:100, _x:mc.targetPosX, ease:Quad.easeOut});)

我能够创建一个循环来获取 "txt_" 动画片段,但是我不知道如何用它们的实例保存它们的目标位置,然后在循环之外使用它们。 先感谢您, 阿提拉

我不知道你在尝试将一些变量存储在实例中时遇到了什么问题,但这里是我对你描述的过程的建议。

首先,我们有一个循环,它可以完成您所描述的所有问题。 为此,我们必须有一些您的 mc 或模式的列表,以动态地制作此列表。从你的问题我想你使用这种循环。

for(var i=0, txtCount=10; i<txtCount; i++){
    textMc = this['txt_'+i];
    //do stuff
    ...
}

从这里开始你的观点。

  1. 你已经做到了。

  2. 使用上述循环将当前对象属性存储在他的实例中

    textMc.storedX=textMc._x;
    textMc.storedY=textMc._y;
    
  3. 这里是相同的循环放置对象,无论你喜欢什么地方

    textMc._x+=25;
    textMc._alpha=0;
    
  4. 最后在同一个循环中使用 greensock。

    TweenLite.to(textMc, 1,{_alpha:100, _x:mc.storedX, ease:Quad.easeOut});
    

就是这样。