我已经厌倦了从下面的网址加载图片是我的示例代码,当试图加载宽度或高度大于8191像素的大图像时,没有调度Event.COMPLETE,我知道flash播放器10 BitmapData限制,因此我们无法加载大于此8191像素限制的图像?是否有任何解决方法可用于此或您建议的任何其他方法?
private function loadImage(url:String):void
{
var request:URLRequest = new URLRequest(url);
var imageLoader:Loader = new Loader();
var context:LoaderContext;
context = new LoaderContext();
context.checkPolicyFile = true;
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, image_completeHandler);
imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
imageLoader.load(request,context);
}
private function image_completeHandler(event:Event):void
{
trace(" Image load Complete");
}
private function ioErrorHandler(event:IOErrorEvent):void
{
trace("ioErrorHandler: " + event);
}
答案 0 :(得分:3)
我建议您拆分图像。如果你需要Flash来处理图像(移动,缩放),我会写一个持有者类,将图像片段添加为自己的子片。
我在下面添加了一些代码和测试链接。查看行动中的代码here。 (等待SWF加载)。
//识别TestClass
package
{
import com.kazumakzak.display.TileImage;
import flash.display.Sprite;
import flash.events.Event;
public class TestBigImage extends Sprite
{
[Embed(source="assets/piece.png")]
private var imageClass : Class;
private var _image : TileImage;
private var _counter : Number = 0;
public function TestBigImage()
{
// create image with tile size 640x480
_image = new TileImage(640, 480);
// add tiles at positions
_image.addTile(new imageClass(), 1, 1);
_image.addTile(new imageClass(), 1, 2);
_image.addTile(new imageClass(), 2, 1);
_image.addTile(new imageClass(), 2, 2);
_image.addTile(new imageClass(), 3, 1);
_image.addTile(new imageClass(), 3, 2);
// add to display list
addChild(_image);
addEventListener(Event.ENTER_FRAME, render);
}
private function render(event : Event) : void
{
_counter += 0.05;
_image.x = -640 + Math.cos(_counter) * 640
}
}
}
// TileImage.as
package com.kazumakzak.display
{
import flash.display.Bitmap;
import flash.display.Sprite;
public class TileImage extends Sprite
{
private var _tileWidth : int;
private var _tileHeight : int;
public function TileImage(tileWidth : int, tileHeight : Number)
{
_tileWidth = tileWidth;
_tileHeight = tileHeight;
}
public function addTile(source : Bitmap, tileX : int, tileY : int) : void
{
source.x = (tileX-1) * _tileWidth;
source.y = (tileY-1) * _tileHeight;
addChild(source);
}
}
}