0

この問題に対する答えが見つからないようです。以下を機能させることができません。

public class Callbattle extends MovieClip
    {
import flash.display.MovieClip;
import flash.display.Stage;
import flash.display.InteractiveObject;
import flash.events.MouseEvent;
import global.Globalvar;

    public var battlegraphics:Array = new Array();
    public function Battle()
    {



        var battlewindow:MovieClip = new Battlewindow() as MovieClip;
        battlegraphics.push(addChild(battlewindow));
        battlewindow.x = 4; 
        battlewindow.y = 248;

        var attackbutton:MovieClip = new Battlebutton() as MovieClip;
        battlegraphics.push(addChild(attackbutton));
        attackbutton.x = 192; 
        attackbutton.y = 255;

        attackbutton.addEventListener(MouseEvent.CLICK, Attackclicked);


    }

    public function Attackclicked(event:MouseEvent):void{
        battlegraphics[attackbutton].y = 248;
    }

}

エラーが発生します

バトルグラフィックス[攻撃ボタン].y = 248;

ムービークリップを配列に追加するこの方法を試す前に、次のようにして同じ結果を得ていました。

public class Callbattle extends MovieClip
        {
    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.display.InteractiveObject;
    import flash.events.MouseEvent;
    import global.Globalvar;
public function Battle()
        {



            var battlewindow:MovieClip = new Battlewindow() as MovieClip;
            this.addChild(battlewindow);
            battlewindow.x = 4; 
            battlewindow.y = 248;

            var attackbutton:MovieClip = new Battlebutton() as MovieClip;
            this.addChild(attackbutton);
            attackbutton.x = 192; 
            attackbutton.y = 255;

            attackbutton.addEventListener(MouseEvent.CLICK, Attackclicked);

            while (Globalvar.battle == true){

                if (hero1turn == true){

                }
            }
        }

        public function Attackclicked(event:MouseEvent):void{
            attackbutton.y = 248;
        }
    }

基本的に、別の関数からムービークリップにアクセスできるようにしたいだけです。

みんなありがとう、どんな助けでも素晴らしいだろう - マーク

4

2 に答える 2

1

トリックは、配列の内容を参照している場合、 type のインデックスを使用するintか、場合によっては type のインデックスを使用しますがString、 yourattackbuttonはその関数で未定義です。解決策は非常に簡単です。関数attackbuttonの外側で宣言し、開始からBattle()削除します。varattackButton

public class Battle extends MovieClip {
    private var attackbutton:MovieClip;
    private var battlewindow:MovieClip;
    public function Battle() {
        attackbutton=new Battlebutton();
        battlewindow=new Battlewindow();
        ...
    }
    public function attackClicked(event:MouseEvent):void {
        attackbutton.y=248; // this is now valid
    }
}
于 2013-05-14T11:33:57.913 に答える
1

バトルグラフィックス[攻撃ボタン].y = 248;

配列は、指定した変数名ではなく、数値を取る必要があります。そうなる

バトルグラフィック[1].y = 248;

于 2013-05-14T11:37:11.483 に答える