请帮助我将此代码更新为AS3,它在AS2中。我正在学习ActionScript,所以它对我来说仍然是一个怪物...请对我很轻松。
stop();
particles_mc.duplicateMovieClip.visible = false;
trace ("undefined term")
var i:Number = 0; var
total:Number = 100;
for ( ; i < total; i++)
{
particles_mc.duplicateMovieClip. ("particles_
mc"+i,i);
this["particles_mc"+i]._rotation = Math.floor.
(Math.random() * 360);
this["particles_mc"+i].gotoAndPlay ( Math.random
() * particles_mc.MovieClip.totalFrames) );
}
帮助堆叠!
答案 0 :(得分:1)
这看起来很不错。在AS3中有几种方法不再可用(主要是为了更好)。我会在下面解释一下。
duplicateMovieClip
。 AS3中没有简单的“重复”方法,但 有几种方法可以制作动画片段(mc)的多个副本。
4as,一个致力于flash编程的博客,为实现其中的几个方法提供了非常好的示例/教程,但我最喜欢的(我相信最简单的),就是创建一个自定义类,您将不止一次使用的mc(“复制”)。
首先转到库中的mc并右键单击以显示属性选项。打开符号属性窗口后,选中“导出for actionscript”框并记住“类”文本框中的文本。 * 如果您在符号属性窗口中没有看到这些选项,请确保您的高级选项可见。
现在您已经为您的mc创建了一个类,您可以在代码中随时通过编写来轻松创建mc的副本:
//this creates a new movieclip called mc that is a
//duplicate of the movieclip class you created.
//replace className with the text from the "Class"
//textbox in the symbol properties window
var mc:MovieClip = new className();
为了将重复的mc放在舞台上,请调用addChild()
或addChildAt()
方法:
//adds a movieclip to the stage
addChild(mc);
//adds a movieclip to the stage at a certain depth
addChildAt(mc,0);
_rotation
。而是使用rotation
而不使用下划线。
//rotate movieclip by a certain amount
mc.rotation=180;
totalFrames
实际上在技术上是AS3(AS2中的_totalFrames
)。但是,您调用它的方式不正确。而不是在名为mc的动画片段内的名为MovieClip的动画片段中要求提出帧总数的mc.MovieClip.totalFrames
,而只需要说mc.totalFrames
。这要求movieclip mc中的帧总数,在这种情况下,这就是我们想要的。
以下是您在as3中重写的代码,将这些更改考虑在内(并对遗忘的括号和奇怪的间距进行了一些修正):
//create the invisible starting mc **Not actually necessary**
/*
var start_mc:MovieClip = new part();
addChild(start_mc).visible = false;
*/
//initialize i
var i:Number = 0;
//initialize total
var total:Number = 100;
//loop i to total
for(;i<total;i++){
//Create a new mc
var mc:MovieClip = new part();
//Add that mc to the stage and name it "mc" followed by the number "i"
addChildAt(mc,i).name="mc"+i;
//rotate mc random number of degrees 0-359
mc.rotation=(Math.floor(Math.random() * 360));
//gotoAndPlay (do you really mean play?) random frame
mc.gotoAndPlay(Math.floor(Math.random()*mc.totalFrames)+1);
}
您可能会注意到我在创建动画片段后没有使用this["mc"+i]
更改动画片段。在as3中,您可以通过用于创建它的变量来引用新创建的movieclip。在这种情况下mc
。但是,如果您不相信此方法,或者稍后需要单独更改每个mc,则可以使用getChildByName()
方法。
this.getChildByName("mc"+i).rotation=180;
我希望这有帮助!
编辑:
我添加了随机缩放以使其更漂亮。
尝试下载.fla以查看代码和动画片段的结构。