2011年01月10日

MC呼び出しと同時にプロパティ設定

■現象
攻撃ボタンを押すと、武器の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になるのかは謎です。
中々難しい世界です。




2011年01月06日

TypeError: Error #1009 同じ名前のテキストフィールド

■エラーメッセージ
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。


■原因
4フレームを通して共有しているテキストフィールドが存在。
フレーム間を移動したり、各フレーム上のボタン等をクリックするとテキストフィールドにメッセージが表示されるはずであったが、途中から上記のようなエラー。
色々調べた結果、とあるフレームの別レイヤーに同じ名前のテキストフィールドが存在していた。


■対応
不要な方を消したら解決




同じ名前でも、パブリッシュ時にエラーとはならないんですね。



.

2010年12月26日

今度こそ、念願のホーミング(本物)を手に入れたぞ!

今まで真っ当に仕上がってなかったホーミングが形になりました。

てか最初、シューティングゲーム アルゴリズムマニアックス
を見て、ベクトルの内積を使ったやり方を試してたんですが全然ダメでした。

しょうがないので三角関数メインの我流です。

とりあえず、動いてれば良いという事で・・・・(ーー;)



とりあえずこんな感じ、ですが索敵がやや適当です



.今回やってみた内容
posted by ケン at 16:04 | Comment(0) | TrackBack(0) | 実験 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。