0

私は Adob​​e AIR で Tile Viewer を構築しています。これまでのところ、ユーザーが PNG および JPG ファイルをロードできるようにするドラッグ アンド ドロップ機能を実装しました。

関数は ':File' 形式を返しますが、':Bitmap' データをグラム化し、ループ中に既存のムービークリップに画像を配置し、その 1 つのタイル画像を x と y で繰り返して、タイルマップのプレビューが表示されるようにするにはどうすればよいですか? ?

私の考えは、その 1 つのファイルのインスタンスを単純に追加することでしたが、その正確なコードはわかりません。(ローダーを作成し、それにファイル形式を渡し、BitmapData を取得し、位置 x と y を定義し、幅と高さを定義して配置します。また、インスタンスを作成したいのですが、コードは画像をロードしません 10 x 10回 )

すべての役立つ回答をいただければ幸いです。

編集:

理論例:

(正しい構文なし)

image = new ImageFromDropBox(); // bitmap or whatever

for( x = 0; x < 10; x++) {
    for( y = 0; y < 10; y++) {
        image.x = tilesize * x;
        image.y = tileSize * y;
        image.width = tileSize;
        image.height = tileSize;
        stage.addChild( image ); // so each of the 100 places images should be just instances of the ONE LOADED IMAGE
    }
}
4

1 に答える 1

0

Fileクラスを操作する場合、パラメーターを使用して、上記のfileInstance.urlファイルをローダーにロードできます。

var loader:Loader = new Loader();
var urlReq:URLRequest = new URLRequest(file.url);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
loader.load(urlReq);

function loaded(e:Event):void {
    var bmp:Bitmap = loader.content as Bitmap

    //scale it down and create a scaled down bitmap data for more efficient memory usage
    bmp.width = tileSize;
    bmp.height = tileSize;

    var bData:BitmapData = new BitmapData(tileSize,tileSize); //your new bitmap data
    bData.draw(bmp); //capture the scaled down version of the bitmap

    //if you don't need the original anymore, dispose of it
    bmp.bitmapData.dispose();     

    var image:Bitmap;

    for( var x:int = 0; x < 10; x++) {
        for( var y:int = 0; y < 10; y++) {
            image = new Bitmap(bmp.bData);
            image.x = tilesize * x;
            image.y = tileSize * y;
            image.width = tileSize;
            image.height = tileSize;
            stage.addChild( image );
       }
   }
}
于 2012-09-11T16:36:58.003 に答える