0

我正在 Adob​​e AIR 中构建一个 Tile Viewer,到目前为止,我已经实现了允许用户加载 PNG 和 JPG 文件的拖放功能。

该函数返回一个“:文件”格式,但是我如何在循环时对“:位图”数据进行编码并将图像放置在现有的电影剪辑中,并使一个平铺图像在 x 和 y 中重复,以便显示平铺地图的预览?

我的想法是简单地添加那个文件的实例,但我不知道确切的代码。(创建一个加载器,将文件格式传递给它,并通过定义位置 x 和 y 以及定义宽度和高度来获取 BitmapData 并将其放置到位。我也想创建实例,代码不会加载图像 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 回答