我正在尝试加载swf并将其显示为位图。
到目前为止,我已经能够加载swf了:
loader.load(new URLRequest("assets/floorplan.swf"));
loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, initPic);
现在加载完成后,我希望将此swf转换为Bitmap,如下所示:
public function initPic(loadEvent:flash.events.Event):void
{
container.addEventListener(MouseEvent.CLICK, zoom);
bitmapData = Bitmap(LoaderInfo(loadEvent.currentTarget).content).bitmapData;
image = new Bitmap(bitmapData);
spImage.addChild(image);
container.addChild(spImage);
}
但是我收到错误说TypeError:错误#1034:类型强制失败:无法将flash.display转换为flash.display.Bitmap。
我做错了什么?
答案 0 :(得分:1)
Loader.content 才是位图:JPG,PNG,GIF等。
如果您加载了SWF, Loader.content 会引用主时间轴对象,即 MovieClip 或主文档类继承 MovieClip 或精灵 (不能转换为位图)。
然后, Loader 是加载内容的显示对象容器,因此如果只想缩放/定位/旋转加载的图形,那么操作 Loader <是个好主意/ strong>实例,因为出于安全原因,访问内容可能不可用。
另一个好主意是监听INIT事件而不是COMPLETE,因为加载所有字节时会触发COMPLETE,而当加载的内容实际就绪时会调度INIT。
loader.load(new URLRequest("assets/floorplan.swf"));
loader.contentLoaderInfo.addEventListener(Event.INIT, initPic);
public function initPic(e:Event):void
{
container.addChild(LoaderInfo(e.currentTarget).loader);
container.addEventListener(MouseEvent.CLICK, zoom);
}
此外,如果您的容器除了加载的内容之外没有任何图形,您可以自由地简化代码,如下所示:
container.addChild(loader);
container.addEventListener(MouseEvent.CLICK, zoom);
loader.load(new URLRequest("assets/floorplan.swf"));