マップスクロールをAS3で

AS3版マップスクロール

もうすぐ8月ですが、そろそろ例のブツに手を出したいところです。
手始めに以前AS2で完成したと思っていたマップスクロールをAS3で書き直してみます。


これを機に今回のゲームはビットマップ中心で作ろうと思います。
ということで早速マップチップ用ビットマップを切り出して表示させました。
参考サイト様こちらです。
Flashゲームプログラミング再入門
しかしせっかくFlashで書いたキャラも書き直しかなぁ...。


ちょっと混乱したのは、「BitmapData」と「Bitmap」です。
実質「addChild()」するのは「Bitmap」の方のみのようです。
「BitmapData」はピクセル単位で何やらできるってことでしょうか。
つまり「BitmapData」で細かくビットマップのデータを調節やら何やらしておいて、
いざ描画というとき「Bitmap」というディスプレイオブジェクトとして描画すると。
実際のスクリプト

var bmpData:BitmapData = new BitmapData(25, 25, true, 0);
・・・ // bmpDataをいろいろ弄る

// 実際に描画
var stageSp:Sprite = new Sprite();
stageSp.addChild(new Bitmap(bmpData));    // ビットマップデータをビットマップにして描画

みたいな感じでしょうか。


ちょっとAS2とAS3の描画方法の違いで苦労しましたが、
一応見た目マップスクロールができました。
しかし適当に動かしているとランタイムエラーが出ます。
今回のランタイムエラーはこちら。

TypeError: Error #1010: 条件は未定義であり、プロパティがありません。

マップスクロールでは配列を使用しているのですが、
どこが悪いのやら、配列の要素数を超えて配列の要素を参照していることでこのエラーが出たようです。
AS3では初期化時に使う分だけ「null」などを代入しておいて使わないとエラーが出るようですね。
いや、それはそうと、配列未定義の配列の要素を参照するなんて、
例えばCならかなりキケンな行為なので、スクリプトを使うものとしてヤバイ状況です。
まだ原因をつかめていないのでFlexBuilder2が使えるうちになんとかしなければ。


しかしAS2版はエラーが出なかっただけで上のようなミスは平気でしていたかもしれませんねぇ。
恐ろしい。




# 画像は開発中のものです。(言いたかっただけ)