0

ここに画像の説明を入力

ステージ上に 2 つのオブジェクトがあるので、それらもディスプレイ リスト (Progress_mc、Ship_mc) にあると思います。私は視覚的な形状やas3コード以外を表さないCalculatorクラスを持っているので、表示リストにはありません。Progress_mc のプロパティを操作する最良の方法は何ですか?

: Calculator_as は、幅が変更されたときはいつでも Progress_mc.width を受け取る必要があり、いくつかの計算の後、Calculator は計算結果を Ship_mc.x に送信する必要があります。

Calculator.as でこれらの MC にアクセスできるように、ステージで addChild(Calculator) が必要かどうかを考えていましたが、このクラスはビジュアル オブジェクトではないため、これが正しい方法かどうかはわかりません。または、Calculator クラスでこれ (以下のコード) を実行してから、プロパティにアクセスしようとする必要がありますが、プロパティがステージ上のインスタンスのものではないため、この方法では機能しません。

private var prg:Progress_mc = new Progress_mc;

private var ship:Ship_mc = new Ship_mc;    

または、電卓の子としてそれらを追加し、電卓をステージに追加する必要がありますか? もう1つの問題は、「幅」プロパティが読み取り専用であり、静的関数で使用できないため、計算機でセッターとゲッターを静的関数として使用できないことです(エラー:?)

これらのプロパティにアクセスして操作する最良の方法は何ですか?

いい人たち、どうもありがとう!

4

2 に答える 2

1

私は Calculator インスタンスが一種のグローバルにアクセス可能であると想定しています。その場合、私はあなたが持っていると思います

public function setProgressMcWidth(width:Number):void {...}

電卓クラスで。この関数は、progressMc の幅が更新されるたびに呼び出す必要があります。後で計算機がshipMcに幅を渡す必要がある場合、次のようなイベントをディスパッチできます。

package {
    public class CalculatorEvent extends Event {
        private var _width:Number = width;
        public function CalculatorEvent(type:String, width:Number)
        {
            super(type);
            _width = width;
        }
        override public function clone():Event {
            var ret:CalculatorEvent = new CalculatorEvent(type, _width);
            return ret;
        }
        public function getWidth():Number {return _width;}
    }
}

Calculator に次のようなディスパッチ コードがあります。

dispatch(new CalculatorEvent("shipWidthCalculated", calculatedShipWidth));

Ship mc は、次のような電卓のイベントをリッスンします。

calculator.addEventListener("shipWidthCalculated", handleShipWidthCalculated);
private function handleShipWidthCalculated(event:CalculatorEvent):void {
    trace('calculator calculated my width to be: ' + event.getWidth);
}
于 2013-04-30T23:29:09.527 に答える
0

ただし、電卓インスタンスが表示リストにない場合は、イベントを受け取りません。

于 2013-05-01T01:54:52.590 に答える