加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在父级中从子动画片段中获取变量? 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);
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读