0

タイトルは少し誤解を招くかもしれません。私のコードを見て、説明します

public static function loadTile(tileDir:String = "empty"):void
        {
            if(tileDir != "empty")
            {
                tPoint = new Point(0,0);
                tRect = new Rectangle(0,0,30,30);

                //load in tile sheet image
                loader = new Loader();
                loader.contentLoaderInfo.addEventListener(Event.INIT,tilesLoadInit);
                loader.load(new URLRequest(tileDir));
            }
        }

         private static function tilesLoadInit (e:Event):void {
             tileImage = Bitmap(loader.content).bitmapData;
             tileReady.dispatchEvent(new Event("TileReady"));
         }
var tImage:BitmapData = new BitmapData(30,30);
tileNum = tileNumber;
tPoint.x = 0;
tPoint.y = 0;

tRect.x = 0;
tRect.y = 0;

tImage.copyPixels(tileImage,tRect,tPoint);

this.graphics.beginBitmapFill(tImage);
this.graphics.drawRect(0, 0,tWidth ,tHeight );

tImage という空の bitMapData を作成します。次に、同様に bitMapData であり、画像の写真を含む tileImage という定義済みの変数を使用します。tRect は定義済みで、その幅と高さは 30x30 です。画像の一部をコピーして、tImage に入れます。問題は、AS3 が tImage が正しくない型であるというエラーをスローすることです。

ArgumentError: Error #2015: Invalid BitmapData.

しかし、明らかにそうではありません。私の質問は、グラフィック オブジェクトが受け入れる bitMapData と bitMapData のデータ型に何か違いがあるということですか?

スプライトでタイリングしようとしています。タイルをインタラクティブにしたいので、タイルを表すために通常のビットマップを使用する代わりにスプライト オブジェクトを使用しています。なぜ私が graphics.beginBitmapFill(tImage); を使用しないのか疑問に思われるかもしれません。および graphics.drawRect(0, 0,tWidth ,tHeight ); 使用したいタイルを選択します。その理由は、drawRect() の最初と 2 番目のパラメーターが、実際のスプライトの位置を実際に変更することが判明したためです。

したがって、スプライトの x プロパティと y プロパティを x = 20、y = 20 に設定すると、drawRect(20,20) を設定します。実際には、スプライトの x 座標と y 座標に 20 ピクセルが追加されます。そして、私はその理由を知っています。もっと良い方法を知る必要があるだけです。たくさん書いてすみません、ありがとうございます!

4

2 に答える 2

0

これはおそらく、BitmapData オブジェクトのサイズに対する Flash の組み込みの制限によるものです。ピクセルの総数が 16,777,215 より大きい場合、エラー #2015 がスローされます。

ドキュメントでそれを読むことができます: BitmapData、「例を見る」のすぐ上。

試してみたい場合に使用されたトリックを次に示します

于 2011-03-06T21:55:40.233 に答える
0

タイプが間違っていると言っているのではなく、オブジェクトが無効であると言っています。タイプが間違っていた場合、TypeError が返されると思います。

エラーがスローされた正確な場所も述べておらず、8行目のtImageに問題があると想定しています。問題は、7 行目の tileImage (詳細は指定していません) にある可能性が高いようです。

于 2009-12-30T00:12:12.453 に答える