在侦听器函数之外访问event.target或event.currentTarget [英] Accessing event.target or event.currentTarget beyond the listener Function

查看:79
本文介绍了在侦听器函数之外访问event.target或event.currentTarget的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最初我有两个函数,第一个函数是 dataLoaded ,其中有一个eventListener,它产生了一个名为 itemClicked 的新函数.但是,如果我想添加 delayedFunction 并将 itemClicked 作为 dataLoaded delayedFunction 之间的间歇阶段,当我在我的 delayedFunction 中引用它时,我访问了原始侦听器的 event.target event.currentTarget ?

Originally I had two functions, the first function being dataLoaded which had an eventListener in it that spawned a new function called itemClicked. But if I wanted to add a delayedFunction and have itemClicked as an intermittent stage between dataLoaded and delayedFunction, how can I access the event.target or event.currentTarget of the original listener when I come to reference it in my delayedFunction?

private function dataLoaded(event:Event):void {
    //items properties call - add other calls to master properties later on
    items = data.item;
    // parsing of each ingredient
    for (var i = 0; i < items.length(); i++) {
        // instantiation of mcItem (the stage for each item)
        _item = new Item();
        // sets //over// layer to invisible / transparent
        _item.item_btn_over.alpha = 0;
        // creates the var itemTextField
        _itemTextField = new TextField();
        _itemTextField.text = items[i].toString();
        // adds textfield to displaylist
        _item.addChild(_itemTextField);
        //adds items to container displaylist
        _container.addChild(_item);
    }
    _item.parent.addEventListener( MouseEvent.CLICK, itemClicked );
}

function itemClicked(event:MouseEvent):void {
    if (event.target is Item) {
        var item:Item = Item(event.target);
        TweenLite.to(item.btn_delete, 1,{rotation:180});
        setTimeout(delayedFunction,5000);
        item.parent.removeChild(item);
        parseXML(data);
    }
}

function delayedFunction():void {
    var item:Item = Item(event.target);
    item.parent.removeChild(item);
}

(我已经模拟了上面的函数,因此我可能缺少一些右括号,但这与我的问题无关紧要)

(I've mocked up the functions above, so I may be missing some closing parenthesis, but this doesn't matter in relation to my question)

这个问题已经困扰了我好几天了,我想不出一种使父 _item event.target 可供其他功能访问的方法监听功能.

This question has been on my mind for days and I can't think of a way of making the event.target of the parent _item accessible to functions other than the listening function.

推荐答案

您可以像这样将参数传递给您的 setTimeout 调用:

You can pass arguments to your setTimeout call like this:

setTimeout(delayedFunction, 5000, event.currentTarget);

然后从您的 delayedFunction 方法的 arguments 数组中获取参数:

Then get the argument from the arguments array from your delayedFunction method:

function delayedFunction():void {
    var item:Item = arguments[0] as Item;
    item.parent.removeChild(item);
}

看看

Have a look at the setTimeout docs if you need information.

这篇关于在侦听器函数之外访问event.target或event.currentTarget的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆