1

いくつかの長方形を含む .fla を Flash Professional で作成しました。各長方形は異なる色で、個別のムービー クリップです。次に、内部にすべての長方形を含むムービー クリップ ( RectContainer) を作成し、'AS Linkage' を追加して、Flash ビルダーでこのコンテナー クラスのインスタンスを作成できるようにしました (.swc としてエクスポートした後)。

私の質問はこれです。各四角形に変数を追加したい場合、Flash ビルダーからこの値を読み取るにはどうすればよいでしょうか。

たとえば、「red」という単語を含む赤い四角形、「blue」などを含む青い四角形に文字列変数を追加したいとします。

次に、リスナーを四角形に追加したいので、リスナーをクリックすると、クリックされた四角形の色の文字列を取得できます。

for (var i:int = 0; i < rectContainer.numChildren; i++) {
    rectContainer.getChildAt(i).addEventListener(MouseEvent.MOUSE_DOWN, fl_Click);
}

function fl_click(event:MouseEvent):void
{
    event.currentTarget. ???
}
4

2 に答える 2

1

まず、フラッシュでは、画像のように名前を設定する必要があります。

ここに画像の説明を入力

以下のようにアクセスできます。

currentTarget潜在的なリスクがあるため、a は使用しないでください。子オブジェクトが重複している場合、期待は異なる場合があります。詳細については、Google で検索してください。

targetとの違いを知るために必要なものとまったく同じcurrentTargetです。これは非常に重要な概念です。

ここに画像の説明を入力


public function Constructor()
{
   var container:RectContainer = new RectContainer();
   this.addEvent(container);
   var i:int = 0;
   while(i<container.numChildren)
   {
        container.addEventListener(MouseEvent.CLICK, onClick);
        i++;
   }
}

private function onClick(e:MouseEvent):void
{
    var mc:MovieClip = e.target as MovieClip;

    if(mc.name == "myCircle1")
    {

    }
    else if(mc.name == "myCircle2")
    {

    }
    else if(mc.name == "myCircle3")
    {

    }

    trace(mc.name);
}
于 2012-08-17T00:21:13.473 に答える
0

四角形が継承するカスタム クラスを作成する必要があります (または、カスタム クラスで四角形を描画し、.fla を完全に放棄します)。次に、必要な値を保持するパブリック プロパティを指定し、カラー ラベルで何かを行うクリック ハンドラーなどの一般的な関数を作成できます。

public class MyRectangle extends Sprite {
    public var label:String;

    public function MyRectangle(){
        this.addEventListener(MouseEvent.CLICK, clickHandler,false,0,true);
    }

    private function clickHandler(e:MouseEvent):void {
        trace(label);
    }
}

四角形の場合、Flash IDE の場合は、シンボル プロパティにカスタム クラスを基本クラスとして配置します。

于 2012-08-16T23:42:50.627 に答える