被加载的swf必须继承MovieClip或者其子类,而不是继承Sprite 否则将会强制转化失败
Loaded是被加载的swf“:
Loaded.fla:
package {
//该文档的大小是400*200的
// 为了使该swf被夹在后,其他swf能够调用相关变量 则,则该变量必须设为public的公共属性
//强制转换失败的原因
import flash.display.Shape;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.display.MovieClip;
public class Loaded extends MovieClip {
public var _text:Number;//文本内容, 其在加载后的swf里要用的 故将其设为public
private var shape:Shape;
private var _textField:TextField;
public function Loaded() {
_text=0;
shape=new Shape() ;//shape放在外面
drawTextField();
drawBackground(0x6699FF);
addChild(shape);//end draw
addChild(_textField);
}
private function drawTextField():void {
_textField=new TextField ;
_textField.border=true;
_textField.background=true;
_textField.borderColor=0x000000;
_textField.backgroundColor=0xFFFFFF;
_textField.width=300;
_textField.height=100;
_textField.defaultTextFormat=new TextFormat("Arial",16,0x000000);
_textField.restrict="0-9";
_textField.text=String(_text);
_textField.x=50;
_textField.y=50;
}
//创建背景矩形 在其他swf可以改变背景颜色, 故将其设为public
public function drawBackground(color:uint):void {
_textField.text=String(_text);
shape.graphics.clear();
shape.graphics.lineStyle(2,0);//定义矩形边宽
//画矩形
shape.graphics.beginFill(color);
shape.graphics.drawRect(2,2,398,198);
shape.graphics.endFill();
}
}
}
LoadSwfExampl.fla
//在将其进行强制转换时,被加载的swf里的文档类必须继承MovieClip,而不是Sprite,是Sprite时会导致强制转换失败的错误
//所以被被加载的swf的文档类必须是继承MovieClip的
//在这个代码里我们将操作加载进来的swf里代码, 下面演示的是操作文本的 text属性
package {
import flash.display.LoaderInfo;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.events.MouseEvent;
public class LoadSwfExample extends Sprite {
private var loader:Loader;
private var completeLoaded:Boolean;
private var urlRequest:URLRequest;
private var getSwf:MovieClip;//对swf对象的引用变量
public function LoadSwfExample() {
loader= new Loader();
urlRequest=new URLRequest("Loaded.swf");// 该文档与Loaded.swf在一个目录
//下面我只注册个complete事件,对IOErrorEvent的事件在实际操作时也要注册,以便检测错误
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
loader.load(urlRequest);
stage.addEventListener(MouseEvent.MOUSE_DOWN,onDown);//主要是改变加载进来的swf的背景颜色
}
private function onComplete(e:Event=null):void {
// 下面这句很关键, 将加载进来的Loaded.swf强制转化为MovieClip类型
getSwf=MovieClip(e.currentTarget.content);
//然后可以将其当做影片剪辑来使用 也可以操作swf里的全局变量
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onComplete);
getSwf.x=100;
getSwf.y=200;
addChild(getSwf);
completeLoaded=true;
}
private function onDown(e:MouseEvent):void {
if (completeLoaded) {
getSwf._text+=1;//这里操作了_text全局变量
//调用Loaded.swf里的drawbackground()方法
getSwf.drawBackground(Math.random()*0xFFFFFF);//随机颜色值
} else {
trace("正在加载,请等待...");
}
}
}
}