在父级中从子动画片段中获取变量? Flash AS3
发布时间:2020-12-15 07:28:31 所属栏目:百科 来源:网络整理
导读:我在子MC中定义了一些变量: var first_nme = data.return_first; var second_nme = data.return_second; var email_addr = data.return_email; var user_domain = data.return_domain; var user_name = data.return_username; 我正在尝试在父动画片段/另一
我在子MC中定义了一些变量:
var first_nme = data.return_first; var second_nme = data.return_second; var email_addr = data.return_email; var user_domain = data.return_domain; var user_name = data.return_username; 我正在尝试在父动画片段/另一个动画片段中使用这些变量. 我试过跟踪方法: trace(MovieClip(verif).first_nme); //'verif' is the mc name trace(MovieClip(parent).first_nme); 以上两者都为var first_nme返回了一个未定义的错误. 谁能告诉我如何正确地做到这一点? 谢谢 编辑: 儿童: function completeHandler(event:Event):void{ // Load the response from the PHP file var data:URLVariables = new URLVariables(event.target.data); var returnn_stat = data.return_status; var ffferror256 = data.return_value; returnn_stat = returnn_stat.replace(/s/m,""); if (returnn_stat == "FAILED"){ status_txt.text = ffferror256; } else if (returnn_stat == "PASSED"){ var first_nme = data.return_first; var second_nme = data.return_second; var email_addr = data.return_email; var user_domain = data.return_domain; var user_name = data.return_username; MovieClip(parent).gotoAndPlay("confirm"); first_txt.text = first_nme; second_txt.text = second_nme; email_txt.text = email_addr; username_txt.text = user_name; domain_txt.text = user_domain; } else { status_txt.text = "Oops,something went wrong. Please try again later."; } } 家长: trace(MovieClip(verif).getChildAt(0).first_nme); txtt_txt.text = first_nme; 我已尝试使用行跟踪中的帧编号(MovieClip(verif).getChildAt(0).first_nme);但仍然是同样的错误. 解决方法
看起来你早就调用了traceto,因为你在子mc中异步加载了一些东西.在这里做的正确的事情是加载子mc中的东西,当加载过程完成时(onCompleteHandler),你触发一个由父mc处理的事件.您还可以将加载的数据添加到(custom-)事件,并使用eventobject将其传递给父级:
function completeHandler(event:Event):void { // Load the response from the PHP file var data:URLVariables = new URLVariables(event.target.data); var returnn_stat = data.return_status; var ffferror256 = data.return_value; returnn_stat = returnn_stat.replace(/s/m,""); if (returnn_stat == "FAILED") { status_txt.text = ffferror256; } else if (returnn_stat == "PASSED") { var evt:MyCustomEvent = new MyCustomEvent(MyCustomEvent.DATA_LOADED,true,true); evt.first_name = first_nme; evt.second_name = second_nme; evt.email = email_addr; evt.username = user_name; evt.domain = user_domain; dispatchEvent(evt); } else { status_txt.text = "Oops,something went wrong. Please try again later."; } } 然后你的父mc中有一个eventlistener: this.addEventListener(MyCustomEvent.DATA_LOADED,onDataComplete); // ... private function onDataComplete(evt:MyCustomEvent):void { gotoAndPlay("confirm"); first_txt.text = evt.first_name; second_txt.text = evt.second_name; email_txt.text = evt.email; username_txt.text = evt.username; domain_txt.text = evt.domain; } 最后但并非最不重要的是自定义事件类: package { import flash.events.Event; public class MyCustomEvent extends Event { public static const DATA_LOADED:String = "onDataLoaded"; public var first_name:String; public var second_name:String; public var email:String; public var username:String; public var domain:String; public function MyCustomEvent($type:String,$bubbles:Boolean = false,$cancelable:Boolean = false) { super($type,$bubbles,$cancelable); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |