0

別のクラスにある var を変更したい。このコードを含むクラス c_wall.as を取得しました。

package  {

import flash.display.MovieClip;
import flash.events.Event;


public class c_wall extends c_gameObject {
    public var speed:Number=10;

    public function c_wall() {








    }
    override public function update(){
        x-=speed;

    }
}

}

このクラスは、フレームごとに 10 ピクセルで画面上を移動するオブジェクトである私の壁の子の親です (私の var speed の値)

メインクラスでは、速度変数を変更する次のコードを取得しました。

        Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

        faster.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);

        function fl_TapHandler(event:TouchEvent):void
        {
            trace ("the speed has increased");
            speed++;//this is the speed he doesnt know

        }

今、私はそれが変数の速度を知らないというエラーを受け取ります

解決策は、変数を update(); に含めることだと思います。関数。次のように、ファイルとしてメインでも使用されます。

                function onEnterFrame(evt:Event):void
                {

                    wall.update(;

                    player.update();


                } 

しかし、私はそれを機能させません...誰かが解決策を知っていますか?

こんにちは、メリジン

4

1 に答える 1

1

リスナーをメイン クラスに保持する場合は、変数TouchEventにアクセスしようとする行を削除します。speed次に、変数が定義されているc_wallクラスでspeed、イベント リスナーのコールバック関数をオーバーライドし、変数を操作します。

メインクラスでは:

protected function fl_TapHandler(event:TouchEvent):void {
    //Do things relevant to the main class
}

c_wallクラスで:

override protected function fl_TapHandler(event:TouchEvent):void {
    super.fl_TapHandler(event); //Pass along the event to the parent 
    speed++;
}

もちろん、メイン クラスでイベント リスナーをまったく使用していない場合は、いつでも継承チェーンを下のc_wallクラスに移動して、オーバーライドをスキップできます。

于 2012-12-04T14:08:40.947 に答える