0

私はアクション スクリプト 3 にかなり慣れていないので、ゲームのキャラクターの速度を設定するフレームのルート タイムライン内に変数があります。

var userSpeed:Number = 2;

今、射撃用のクラスがあり、パワーアップを撃つと速度が 4 (デフォルトの 2 倍) に変わるようにヒット テストを追加しましたが、これはクラス内にあるため、どうすればよいか疑問に思っていましたクラス内でここから変数を変更します。

if(this.hitTestObject(speedPower) || this.x < 0 || this.x > stage.stageWidth || this.y < 0 || this.y > stage.stage.height)
{
this.removeEventListener(Event.ENTER_FRAME, moveShot);
this.parent.removeChild(thisshootTurret);
this.parent.userSpeed = 4;
}

変数にアクセスする方法はランダムな推測にすぎませんでした。私の問題に適合するインターネットや質問がここで見つからなかったので、思いついたのはそれだけです。

現在の方法では、次のエラーが表示されます。

1119: Access of possibly undefined property userSpeed through a reference with static type flash.display:DisplayObjectContainer.

試してみると同じエラーが発生します。

root.userSpeed = 4;

助言がありますか?

4

2 に答える 2

0

タイムラインで変数または関数を定義するときはいつでも (メイン タイムラインまたは特定のタイムラインに関係なくMovieClip)、関連付けられたクラスに追加されます (存在する場合、すべての にクラスを関連付ける必要はありませんMovieClip) MovieClip

メイン タイムラインは常にドキュメント クラス(メイン クラス) に関連付けられており、メイン タイムラインで変数を作成すると、それをメイン クラスのコンストラクターで直接使用できます。それらに値を割り当てて実行します。

私が推測しているあなたのコードから、this.parentメインクラス - ドキュメントクラスの参照です。これが当てはまる場合は、次のコードを使用してください。

if(this.hitTestObject(speedPower) || this.x < 0 || this.x > stage.stageWidth || this.y < 0 || this.y > stage.stage.height)
{
    this.removeEventListener(Event.ENTER_FRAME, moveShot);
    this.parent.removeChild(thisshootTurret);
    this.parent.userSpeed = 4; // You just access userSpeed variable because it 
                               // is member of Main class.
}
于 2013-02-24T20:16:33.430 に答える