简单使用loader 加载外部swf文档中的图片资源:
import spark.primitives.BitmapImage;
import mx.events.FlexEvent;
private var _loader:Loader;
private var _dataToLoad:LoaderInfo ;
private var _context:LoaderContext;
//加载外部swf
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompleteHandler);
_loader.load(new URLRequest("x.swf"),_context);
}
private function loadCompleteHandler(e:Event):void
{
trace("complete");
var img:BitmapImage = new BitmapImage();
var dataClass:Class = _loader.contentLoaderInfo.applicationDomain.getDefinition("classname") as Class ;
img.source = new dataClass(0,0) as BitmapData;
this.addElement(img);
}
|
简单实用loader加载swf当中的movieClip文件
package
{
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
import flash.system.SecurityDomain;
public class loader2 extends Sprite
{
private var _loader:Loader;
private var _dataToLoad:LoaderInfo ;
private var _context:LoaderContext;
public function loader2()
{
startLoader();
}
protected function startLoader():void
{
_loader = new Loader();
_context = new LoaderContext();
_context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
// _context.securityDomain = SecurityDomain.currentDomain; 本地SWF文件取不到securityDomain属性值.这么写会报错。
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompleteHandler);
_loader.load(new URLRequest("mc.swf"),_context);
}
private function loadCompleteHandler(e:Event):void
{
trace("complete");
var dataClass:Class = _loader.contentLoaderInfo.applicationDomain.getDefinition("mc1") as Class ;
var mc1:MovieClip = new dataClass() as MovieClip;
mc1.y = 100;
this.addChild(mc1);
var dataClass:Class = _loader.contentLoaderInfo.applicationDomain.getDefinition("mc2") as Class ;
var mc2:MovieClip = new dataClass() as MovieClip;
mc2.x = 50;
mc2.y = 100;
this.addChild(mc2);
}
}
}
|
loade当中可能会抛出的错误:*
LoaderContext.securityDomain值必须为null或者等于SecurityDomain.currentDomain。这以来
你只有把要加载的文件放在受信任安全沙箱中,或者放在你自己域(需要一个策略文件),才能加载到这些文件..
* 本地的SWF文件只能将LoaderContext.securityDomain设置为null,不充许在本地加载非本地件.
* 如果applicationDomain 或者 securityDomain 属性是一个不被信任的域。
* 本地SWF文件取不到securityDomain属性值.
阅读(2995) | 评论(0) | 转发(0) |