假设我有一个资源文件导出mc1
,其中包含4个帧。我想创建一个新的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。我正在使用:
我目前还没有尝试构建游戏或任何互动游戏。我设法创建了一个简单的动画,其中背景精灵正在旋转(就是这样)。我使用TimerEvent
来实现这一目标。但我真的希望能够构建一个MovieClip并在其上附加单独的帧然后在循环播放它。
或者我可以创建一个MovieClip,并以编程方式逐帧绘制。 (然后当然是循环播放)
基本上我想用ActionScript来生成内容而不是swfmill的XML(不是simple
方言,simple
很好。由于我是初学者,我不知道我能给你什么其他信息。所以请告诉我是否可以提供任何其他细节?
答案 0 :(得分:5)
没有Flash IDE,使用gotoAndStop()等没什么意义。
由于您无法在不同的框架上添加不同的资源,因此您应该使用addChild(assetToAdd)将它们全部添加为图层,并将除了一个以外的所有资源设置为visible = 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;
}
}
}
答案 1 :(得分:0)
我不知道你想做什么的方便方法。您的示例将无法工作,因为currentFrame是一个只读属性,它返回的只是一个表示帧号的整数,而不是构成实际帧的数据。
我的建议是,如果你需要动态重新排列帧,那就是将特定的MovieClip包装在一个自定义类中,该类将gotoAndPlay(x)转换为你想要的任何数字。
然而,根据你想要达到的目标,这可能不是很有用,但如果你澄清一下你的问题,我相信我们可以提出一个适当的建议。