繁体   English   中英

初学者:在Haxe / ActionScript3中将帧动态插入到MovieClip中

[英]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。 我在用:

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

在这一点上,我不是要构建游戏或任何交互式的东西。 我设法创建了一个简单的动画,其中背景精灵正在旋转(仅此而已)。 我使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM