引っ越しました

2010年08月29日

ゲーム『AVOID』の不具合

ちょっと前、ゲームにコメントを入力できるフォームを設置した。

huguai.png
 ▲左下のテントウムシアイコンがそれ。お気軽に。

さっそくトロイさんから『AVOID』のバグ報告。

どうも。バグ報告です。やっつけたラインが以前は消えてたのに消えなくなりました。
そのまま続けると重くなってきます。確認してみてください。


確認してみたら、ホントだ! 消えない!
なんで?(°д°) 以前は消えてたのに。

不具合が起こる前と後で変更した事といえば… コメント入力フォーム(笑)

ってわけで、修正した。


−−−−−−−−−−−−−−−−−−−−−−−−

以下、そのメモ(分かる人だけ)


コメントフォーム内でボタンとスクロールのコンポーネントを使っている。

コンポーネントを使用すると(ライブラリにあるだけでも…)
_root.getNextHighestDepth()の戻り値が1048576になってしまう。
深度の上限は1048575、越えてる…これはFlashの仕様なので回避不能。

線の追加の深度指定にgetNextHighestDepth()を使ってたので、
上限を越えた分は_root.removeMovieClip()の対象にならなかった…というワケ。
(しかもこの不具合、エラーが返ってこない…)

つまり、倒した線どころか、自然消滅した線すら消えずに残ってたという…
(消えたように見えてたのは、alpha値が0になってただけ)

ありがちなミスなんだけどねぇ…(´〜`;)ゞ
_rootでコンポーネント使ってなけりゃ大丈夫かと思い込んでたヮ。
他のゲームでも不具合起きてるかも…報告ヨロです。


解決法

getNextHighestDepth()の使用をやめた。
かわりに線1つ1つにユニークIDをつけて、それを深度に割り当てた。
ユニークIDつっても、線が増える度に単純に数値を上げてゆくだけ。ID++ね。
まずないと思うけど、それでもIDが1048575を越えてしまったら、
やっぱり消えなくなっちゃうので、1000000を越えた時点でIDを0に戻すようにした。




posted by さくらい | 日常 | 更新情報をチェックする
×

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