5 variables flash actionscript-3
我在子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;
Run Code Online (Sandbox Code Playgroud)
我正在尝试在父动画片段/另一个动画片段中使用这些变量.
我试过跟踪方法:
trace(MovieClip(verif).first_nme);
//'verif' is the mc name
trace(MovieClip(parent).first_nme);
Run Code Online (Sandbox Code Playgroud)
以上两者都为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.";
}
}
Run Code Online (Sandbox Code Playgroud)
家长:
trace(MovieClip(verif).getChildAt(0).first_nme);
txtt_txt.text = first_nme;
Run Code Online (Sandbox Code Playgroud)
我已尝试使用行中的帧编号,trace(MovieClip(verif).getChildAt(0).first_nme);但仍然是相同的错误.
看来您提前调用了,trace因为您在子 mc 中异步加载了某些内容。这里正确的做法是加载子 mc 中的内容,当加载过程完成 ( onCompleteHandler) 时,您将触发由父 mc 处理的事件。您还可以将加载的数据添加到(自定义)事件并使用事件对象将其传递给父级:
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.";
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的父MC中有一个事件监听器:
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;
}
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是自定义事件类:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)