Flash:可以动态地将事件代码添加到实例中吗?

时间:2010-03-16 12:45:45

标签: flash actionscript actionscript-2

我想最初使一个movieclip不可见,但我不想在flash中的属性中手动设置它,因为我不能在场景中看到它。

我希望我可以像这样添加一些代码:

MC第一帧。

this.onClipEvent(load)
{
this._alpha = 0;
}

但我不能。如何为所有实例将MC _alpha设置为0,而无需手动将其添加到每个实例或在属性中设置它?

编辑:或为它创建一个类来设置alpha。

4 个答案:

答案 0 :(得分:0)

如果您想通过在动作脚本2中创建subclass来实现这一目标,那么这是Adobe提供的一个很好的分步教程。

http://www.adobe.com/devnet/flash/articles/mc_subclasses_v2_04.html

本教程指示您添加onEnterFrame事件处理程序,但您可以忽略它,只需将以下代码添加到构造函数中。

如果您的班级名称是Ball,那么代码将如下所示。 (这是教程中的第4步)。

dynamic class Ball extends MovieClip {

  function Ball() {
    this._alpha = 0;
  }
}

答案 1 :(得分:0)

也许有些东西我没有正确理解,但你只需在第一帧写下这样的东西:

yourFirstMovieClip._alpha = 0;
yourSecondMovieClip._alpha = 0;


<小时/> 如果您的MovieClips名称已编号(mc0,mc1,mc2,mc3 ...),则可以使用循环将_alpha属性设置为每个剪辑。 假设你有5个片段(mc0到mc4):

for( var i:Number = 0  ;  i < 5  ;  i++ )
{
    this["mc"+i]._alpha = 0;
}


<小时/>

如果没有,您可以将每个片段存储在一个数组中,然后循环播放它:

var clips:Array = [mcFirst, mcSecond, mcThird, mcFourth];
for( var i:Number = 0  ;  i < clips.length  ;  i++ )
{
   clips[i]._alpha = 0;
}

答案 2 :(得分:0)

我现在正在使用此代码,它可以满足我的需求。但我恨它。

    var once:Boolean;

    if (once == null) {
        once = true;
        this._alpha = 0;
    }

答案 3 :(得分:0)

另一个解决方案可能是将此行放在MovieClip的第一帧:

_alpha = 0;

在第二帧开始动画,并在最后一行添加以下行:

gotoAndPlay( 2 );

所以第一帧的代码只执行一次。