我正在Adobe AIR中构建一个Tile Viewer,到目前为止,我已经实现了拖放功能,允许用户加载PNG和JPG文件。
该函数返回':File'格式,但是我如何克服':Bitmap'数据并在循环时将图像放在现有的动画片段中,并使一个图块图像在x和y中重复,以便预览将显示tilemap?
我的想法是简单地添加那个文件的实例,但我不知道确切的代码。 (创建一个Loader,将File格式传递给它,并通过定义位置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
}
}
答案 0 :(得分: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 );
}
}
}