2

假设我有一个资源文件,其中导出mc14 帧。我想创建一个新的MovieClip并插入这样的框架:

mc2:flash.display.MovieClip = new flash.display.MovieClip()

mc1.gotoAndStop(2);
mc2.gotoAndStop(1);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(1);
mc2.gotoAndStop(2);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(2);
mc2.gotoAndStop(3);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(4);
mc2.gotoAndStop(4);
mc2.currentFrame = mc1.currenctFrame

[编辑] 更多细节

我没有使用 Flash IDE。我在用:

  • Inkscape(用于 SVG 生成)
  • swfmill(创建资产文件)
  • Haxe(创建动画)

在这一点上,我不是在尝试构建游戏或任何交互的东西。我设法创建了一个简单的动画,其中背景精灵正在旋转(就是这样)。我用TimerEvents 来实现这一点。但相反,我真的希望能够构建一个 MovieClip 并在其上附加单个帧,然后循环播放。

或者,我可以创建一个 MovieClip 并以编程方式逐帧绘制它。(然后当然循环播放)

基本上我想使用 ActionScript 来生成内容而不是 swfmill 的 XML(不是simple方言,simple很好)。由于我是初学者,我不知道我可以给你什么其他信息。所以请告诉我是否可以提供任何其他详细信息?

4

2 回答 2

5

如果没有 Flash IDE,使用 gotoAndStop() 等就没有什么意义了。

由于您无法在不同的框架上添加不同的资产,您应该使用 addChild(assetToAdd) 将它们全部添加为图层,并将除一个之外的所有资源设置为可见 = false。然后添加一个简单的函数,如下所示:

function showFrame(num:int):void
{
    for (var i:int = 0; i < numChildren; i++)
    {
       if (i == num)
       {
          getChildAt(i).visible = true;
       }
       else
       {
          getChildAt(i).visible = false;
       }
    }
}
于 2009-01-15T09:53:14.647 回答
0

我不知道有一种方便的方法来做你想做的事情。您的示例不起作用,因为 currentFrame 是一个只读属性,它返回的只是一个表示帧号的整数,而不是构成实际帧的数据。

如果您需要动态重新排列帧,我的建议是将特定的 MovieClip 包装在一个自定义类中,该类将 gotoAndPlay(x) 转换为您想要的任何数字。

但是,根据您要实现的目标,这可能不是很有用,但是如果您稍微澄清一下您的问题,我相信我们可以提出适当的建议。

于 2009-01-15T08:58:41.870 回答