actionscript-3 – 如何从加载的swf访问父movieclip的变量
我有一个加载外部swf的swf.加载器swf有一个我想从加载的swf访问的变量.我使用MovieClip(parent.parent).myVar但它返回此错误
加载器swf有一个自定义文档类,我认为这是问题. 提前致谢. 编辑 这是主要的SWF package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLRequest; import flash.text.TextField; /** * ... * @author chchrist */ public class CardSender extends Sprite { private var loader:Loader; private var viewButtonArray:Array; private var sendButtonArray:Array; private var cardContainer:Sprite; public var testVar:String public function CardSender() { testVar = "it worked!!!"; init(); } private function init() { viewButtonArray = [cardsenderMC.view01,cardsenderMC.view02,cardsenderMC.view03,cardsenderMC.view04]; for each( var viewButton in viewButtonArray) { viewButton.buttonMode = true; viewButton.addEventListener(MouseEvent.CLICK,onViewClick); } } private function onViewClick(e:MouseEvent):void { var cardName = "card"+e.target.name.substring(4)+".swf"; loader = new Loader(); loader.load( new URLRequest(cardName)); loader.contentLoaderInfo.addEventListener(Event.INIT,onCardInit); } private function onCardInit(e:Event):void { addChild(loader); var content:* = loader.content; content.closeButton.addEventListener(MouseEvent.CLICK,onCloseClick); } private function onCloseClick(e:MouseEvent):void { removeChild(loader); } } } 我试图使用此代码从加载的swf访问测试变量 trace(MovieClip(parent.parent).testVar); 编辑#2 如果我addChild(加载器)不在onCardInit但在onViewClick和加载的swf的第一帧中我有Object(parent.parent).testVar它工作…但为什么它不想在onCardInit内功能? 解决方法
您只有一个加载器变量,并且您正在创建四个Loader实例并将它们分配给它 – 因此,如果您快速连续单击它们中的所有四个,则loader变量将有效地包含与最后一次单击相对应的Loader对象.所有addChild调用都将作用于同一个Loader对象 – 其他对象不会被添加,其父对象将继续为null
对代码进行以下更改: private function onCardInit(e:Event):void { addChild(LoaderInfo(e.currentTarget).loader); var content:DisplayObject = loader.content; trace(content); trace(content.closeButton); content.closeButton.addEventListener(MouseEvent.CLICK,onCloseClick); } private function onCloseClick(e:MouseEvent):void { trace(e.currentTarget);//should be the closeButton trace(e.currentTarget.parent);//should be the loaded swf trace(e.currentTarget.parent.parent);//should be the Loader object that loaded it //The following will work only if last three traced correctly removeChild(e.currentTarget.parent.parent); } 回答问题中的以下更新:
同样,这可能是因为您要添加不同的加载器对象 – 您是否单击了多个视图按钮?单击视图按钮并等待它加载以查看它是否正常工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |