actionscript-3 – 如何加载swf并与之交互?
我试过SWFLoader,但问题是加载的内容是MovieClip,我不知道如何与它交互,而MovieClip#numChildren为零.
顺便说一下,我无法将闪光灯传递给瑞士法郎. 解决方法
首先,你应该知道你的问题没有确切的答案,因为它取决于你加载的SWF(你知道与否,它的显示列表,……)但是我会举一个简单的例子来解释事情,你有适应你的情况.
对于这个例子,假设我们有一个非常简单的SWF(加载的SWF),它包含一个TextField(称为txt_url)和一个按钮(一个名为btn_go的MovieClip). btn_go按钮将打开在txt_url TextField中输入的URL. 对于我们的第二个SWF(加载器),我们将使用Loader对象加载我们的第一个(在这种情况下将是Loader.content),然后我们将设置URL(txt_url文本)并触发click事件在btn_go按钮上. 所以这是我们的loader.swf的代码示例: var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,on_SWFLoad); loader.load(new URLRequest('loaded.swf')); addChild(loader); function on_SWFLoad(e:Event): void { // get our loaded SWF var loaded_swf:DisplayObjectContainer = DisplayObjectContainer(loader.content); // because we know our target objects,we can use "getChildByName()" // set the URL TextField(loaded_swf.getChildByName('txt_url')).text = 'http://www.example.com'; // open the URL in the browser by triggering the click event on the "btn_go" button MovieClip(loaded_swf.getChildByName('btn_go')).dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } 此示例将在加载SWF后直接在浏览器中设置和打开URL,当然我们可以在单击按钮或其他内容后执行该操作,但这只是一个简单的示例,向您展示如何执行… 现在,问题是当我们对加载的SWF及其子代(名称,深度,……)一无所知时,在这种情况下我们应该做更多努力来做我们想要的:我们应该遍历整个显示列表加载的SWF用于标识目标对象. 回到我们的例子,让我们说我们只知道舞台上有一个TextField和一个按钮,所以我们的代码就像这样: function on_SWFLoad(e:Event): void { var loaded_swf:DisplayObjectContainer = DisplayObjectContainer(loader.content); var num_children:int = loaded_swf.numChildren; for(var i:int = 0; i < num_children; i++) { var child:DisplayObject = loaded_swf.getChildAt(i); if(child is TextField) { trace(child.name); // gives : txt_url TextField(child).text = 'http://www.example.com'; } else { if(child.hasEventListener(MouseEvent.CLICK)) { trace(child.name); // gives : btn_go child.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } } } } 再一次,这是一个非常简单的例子,只是为了说明我们如何继续…… … 然后关于在SWF之间传递值(参数),看看my answer of this question,你有一个小例子. 有关Display programming(显示列表,显示对象,显示对象容器……)的更多信息,请查看here. 希望能有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- flash shareObject
- (2.2.8.9) 解决被依赖module中BuildConfig.DEBUG的值总为
- ruby-on-rails – 安全更新为Spree寻找零钱:类
- Flutter框架:深入理解Flutter Platform Channel
- Swift 集合类型(Collection Type) 之 set(官方文档翻译及总
- c# – Web API状态端点(GET和POST)
- 如何使用open xml sdk从c#更改页面方向
- 【吴恩达深度学习】2. 改善深层神经网络:超参数调试,正则化
- 《Where's My Water? / 鳄鱼小顽皮爱洗澡》小顽皮的故事
- NoSQL之Redis(五)--- Redis测试以及其与Spring的集成