1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > flash AS3.0访问加载的SWF文件中的属性 方法以及类 库中的影片剪辑

flash AS3.0访问加载的SWF文件中的属性 方法以及类 库中的影片剪辑

时间:2020-07-03 07:06:17

相关推荐

flash AS3.0访问加载的SWF文件中的属性 方法以及类 库中的影片剪辑

对于FLASH,我们可以把任何的可视化元件都看成某个类文件的具体实例,包括swf文件。

我们可以把swf文件看成一个类的具体实例,而它里面拥有个个其他类的实例对象,例如:

我们新建一个loaded.fla文件,然后我们建立一个影片剪辑元件,你可以在它的内部做一些动画处理,打开库,单击元件右建,选择“链接”打开“链接属性”,在类的输入框里我们键入“MyClass”

这样一来我们就可以把这个元件作为一个类--MyClass。也就是说我们可以通过new来构建这个元件的具体实例并显示在舞台,如:

var test:MyClass=new MyClass();addChild(test);

然而ApplicationDomain类能够获得swf文件的应用程序域,通过getDefinition方法可以从指定的应用程序域获取一个公共定义。 该定义可以是一个类、一个命名空间或一个函数的定义,但是,访问被加载的swf中的属性和方法就不需要ApplicationDomain类,直接访问即可。代码如下

package{import flash.display.Loader;import flash.display.LoaderInfo;import flash.display.MovieClip;import flash.display.Sprite;import flash.events.Event;import .URLRequest;import flash.system.ApplicationDomain;/***@author hypo.chen*@E-mail 645338868@*@data -9-10*/[SWF(width="1024",height="768",frameRate="60")]public class GetAppDomain extends Sprite{private var _lrd:Loader;private var _urlR:URLRequest;public function GetAppDomain(){init();}private function init():void{_urlR = new URLRequest("loaded.swf");_lrd = new Loader();_lrd.contentLoaderInfo.addEventListener(PLETE,onLoaded);_lrd.load(_urlR);}private function onLoaded(e:Event):void{//直接访问被加载的swf中的属性和方法,但是定义的属性和方法必须是publice.target.content.testFun();trace(e.target.content.testVar);//LoaderInfo对象承载载入swf文件的信息var swfTarget:LoaderInfo = e.target as LoaderInfo;var appDomain:ApplicationDomain = swfTarget.applicationDomain as ApplicationDomain;//访问被加载的swf库中链接的类var mcClass:Class = appDomain.getDefinition("MyClass") as Class;var mcA:MovieClip = (new mcClass()) as MovieClip;var mcB:MovieClip = (new mcClass()) as MovieClip;this.addChild(mcA);mcA.x = 100;mcA.y = 100;mcA.alpha = .5;this.addChild(mcB);mcB.x = 400;mcB.y = 100;//访问被加载的swf库中的文档类var _test:Class = appDomain.getDefinition("Test") as Class;}}}

loaded.fla文档类代码如下:

package {import flash.display.MovieClip;public class Test extends MovieClip{public var testVar:String = "testVar";public function Test (){// constructor codetrace("test")}public function testFun():void{trace("testFun");}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。