在侦听器函数之外访问event.target或event.currentTarget [英] Accessing event.target or event.currentTarget beyond the listener Function
问题描述
最初我有两个函数,第一个函数是 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屋!