2012-01-19 11 views
1

私は単にこれらの "マッチ2"ゲームの1つを実行しようとしています。私は始めたばかりです。初心者なので、配列の仕組みを理解しようとしています。その中に(インスタンス名A、B、Cと、舞台上に既にある)配列を宣言し、ムービークリップを置くことを試みた後、何らかの理由で未定義のMovieClip配列

しかし

package { 

import flash.display.MovieClip; 
import flash.events.MouseEvent; 

public class Main extends MovieClip 
{ 
    var Ar:Array = []; 
    Ar[0] = A; 
    Ar[1] = B; 
    Ar[2] = C; 

    public function Main() 
    { 
     for(var i = 0; i < 3; i++) 
     { 
      Ar.buttonMode = true; 
      Ar[i].addEventListener(MouseEvent.MOUSE_OVER, MouseOverAct); 
      Ar[i].addEventListener(MouseEvent.MOUSE_OUT, MouseOutAct); 
     } 
    } 

    public function MouseOverAct(mouseEvent:MouseEvent):void 
    { 
     mouseEvent.target.alpha = 0.1; 
    } 

    public function MouseOutAct(mouseEvent:MouseEvent):void 
    { 
     mouseEvent.target.alpha = 1.0; 
    } 
} 

}:そこで私はこの簡単なプログラムを書きました私は "未定義のプロパティ"エラーが発生します。 Ar.push()を使って修正しようとしましたが、うまくいきません。誰か助けてくれますか?

答えて

2

この

var Ar:Array = []; 
Ar[0] = A; 
Ar[1] = B; 
Ar[2] = C; 

不正なコードです。変数宣言または任意のメソッドのいずれかで、インスタンスプロパティ(あなたの場合は配列)を初期化する必要があります。スタティックブロック内の固定のプロパティをスタティックブロックに初期化することは可能です。私はこれはlink静的ブロックの初期化についてあなたにとって有益だろうと思う。だから、どちらかの実行する必要があります。

public var _array:Array = [A, B, C]; 

または

public var _array:Array; 

public function Main() 
{ 
    _array = [A, B, C]; 
    for(var i = 0; i < 3; i++) 
    { 
     _array.buttonMode = true; 
     _array[i].addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); 
     _array[i].addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); 
    } 
} 
+0

をあなたの助けのためにありがとうございました。 – MKII

関連する問題