攻撃ボタンを押すと、武器のMCを呼び出して表示。
武器MCには、飛んでいく方向とスピード用の変数を記述。
var speed_x:Number = 0;
var speed_y:Number = 0;
この変数を、武器の座標に加減算して武器を飛ばす処理をしている。
this.x += speed_x;
this.y += speed_y;
移動方向は毎回違うので、MCを呼び出した際に mc.speed_x=20 と親側から設定したのですが、
speed_xは0のままであり、MCは移動せず。
■対応
var speed_x:Number;
var speed_y:Number;
と初期値を代入しなければ親側から代入したmc.speed_x=20が有効となりMCが移動。
良く分からないが、呼び出しと同時に値を代入する変数は初期化してはダメという事?
(後日追記)
入れ子MCの処理タイミングの問題でした。
ASの処理順序は親→子の順で実行されます。
親が呼び出しと同時に子の変数を操作しても、子のターンになると子の側で設定している初期化が改めて行われるのでこのような現象が起こります。
かなり初歩的な知識なのに今まで気付かなかった・・
(後日追記ここまで)
■現象2
上記の続き。
var speed_x:Number;
var speed_y:Number;
と初期値を設定せず、MCを呼び出した際に
mc.speed_x=20と代入。
Y方向は不要だったので、speed_yの代入を省略してしまったら
出現Y座標が0で固定されてしまった。
■対応2
speed_yへの値代入を省略してしまうと、speed_yの値はNaN状態なので普通に考えてダメ。
という事でmc.speed_y=0;とspeed_yの値もちゃんと代入してやればOK。
しかし上記の不具合の影響で、何故出現Y座標が0になるのかは謎です。
中々難しい世界です。