0

こんにちは、インポートされた as ファイルの var を変更しようとしています。誰でも私を指摘するのを手伝ってもらえますか。

これは、externalfile.as の元のコードです。

private function SetNewPosition()
    {
        this.newX = this.GetRandomXPosition();
        this.newY = this.GetRandomYPosition();

        this.totalDistance = this.GetDistance();

        var time:Number = this.totalDistance / this.speed;

        speedX = (this.newX - this.x)/time;
        speedY = (this.newY - this.y)/time;
    }

Main.as から newX と newY を変更しようとしています。これを修正する方法を共有してください。

4

2 に答える 2

1

newX 変数と newY 変数は .as ファイルで非公開になっていると思います。

変数を別の .as で変更するには、次の 2 つの方法のいずれかに従う必要があります。

初め:

変数の修飾子を変更します (プライベートからパブリックに)

2番:

変数にプロパティ get/set を定義して、変数を非公開のままにし、別の .as ファイルから送信された結果を管理できるようにします。たとえば、newX を負にすることができず、Main.as で 0 未満の値を設定しようとすると、set プロパティでその値を 0 にするか、絶対値を適用するかなどを決定できます。

于 2013-10-17T09:35:42.600 に答える
0

main が newX 変数と newY 変数にアクセスできるようにする必要がある理由を自問してみてください。Main が external.as インスタンスの場所をリセットしている場合、「reset」メソッドを external.as に追加して、newX と newY をカプセル化したままにすることができます。目的は、external.as 'inside' のクラスに関する手続き型コーディングを維持しようとすることです。クラス内で external.as を含むアクションを「非公開」で実行できる場合は、そこにコードを追加する必要があります。ただし、Main.as が絶対にアクセスを必要とする場合は、newX と newY の両方にセッター メソッドとゲッター メソッドを追加します。

public function set newX(value:Number):void {
    this.newX = value;
}

public function get newX():Number {
    return this.newX
}
于 2013-10-17T09:46:38.173 に答える