[英]Beginner: Dynamically inserting a frame to a MovieClip in Haxe/ActionScript3
假设我有一个资源文件,其中导出了带有4帧的mc1
。 我想创建一个新的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
就可以)来生成内容。 由于我是初学者,所以我不知道还能为您提供哪些其他信息。 因此,请告诉我是否可以提供其他详细信息?
没有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;
}
}
}
我不知道执行您要尝试执行的便捷方法。 您的示例将不起作用,因为currentFrame是一个只读属性,它返回的所有内容都是代表帧号的整数,而不是构成实际帧的数据。
我的建议是,如果需要动态地重新排列帧,则是将特定的MovieClip包装在自定义类中,该类将gotoAndPlay(x)转换为所需的任何数字。
但是,根据您要实现的目标,这可能不是很有用,但是如果您稍微澄清一下问题,我相信我们可以提出适当的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.