代码之家  ›  专栏  ›  技术社区  ›  4imble

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

  •  0
  • 4imble  · 技术社区  · 16 年前

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

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

    MC框架1。

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

    但我不能。如何将所有实例的mc_alpha设置为0而不手动添加到每个实例或在属性中设置它?

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

    4 回复  |  直到 16 年前
        1
  •  0
  •   jessegavin    16 年前

    如果要通过创建 subclass 在ActionScript2中,这里有一个来自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;
      }
    }
    
        2
  •  0
  •   Zed-K    16 年前

    也许有些事情我没有正确理解,但你只需要在第一帧上写下这样的内容:

    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;
    }
    
        3
  •  0
  •   4imble    16 年前

    我现在正在使用这个代码,它可以满足我的需要。但我讨厌它。

        var once:Boolean;
    
        if (once == null) {
            once = true;
            this._alpha = 0;
        }
    
        4
  •  0
  •   Zed-K    16 年前

    另一种解决方案可能是在movieclip的第一个框架上放置此行:

    _alpha = 0;
    

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

    gotoAndPlay( 2 );
    

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

    推荐文章