自定义播放的AS3事件?
-
20-09-2019 - |
题
在ActionScript 3中,大多数事件使用捕捉/目标/泡模型,这是相当流行时下:
当一个事件发生时,其移动通过事件流的三个阶段:捕获阶段,其从显示列表层次结构,以刚好在目标节点之前的节点的顶部流动;目标相位,其包含所述目标节点;和冒泡阶段,从所述目标节点备份显示列表层次结构。之后的节点流动
然而,一些事件,如Sprite类的enterFrame
事件,不捕获或泡沫 - 你必须直接订阅目标检测事件。该文档将这些作为“广播事件”。我想这是出于性能的考虑,因为这些活动会不断地为舞台上的每个精灵被触发,你不希望有应对一切多余的事件传播。
我要派遣我自己的广播事件。我知道你可以防止事件冒泡(Event.bubbles = false
),但你能摆脱捕获的呢?
解决方案
和气泡捕捉阶段都是整个起泡机构的零件。如果bubbles
设置为false
,两者都是不存在的。
其他提示
这back2dos答案是的错即可。实际上Event.bubbles
属性不影响捕获相位。
public class CaptureTextInput extends Sprite
{
function CaptureTextInput()
{
var t:TextField = new TextField();
t.type = TextFieldType.INPUT;
addEventListener(TextEvent.TEXT_INPUT, function(event:TextEvent):Void
{
trace("captured"); // This event will be triggered properly when you type in text field.
}, true);
addChild(t);
}
}
如果你摆脱了泡沫阶段和捕捉阶段的,不使之成为广播事件。有什么特别的广播事件是,当一个人被分派,每一个听众是不管他们是打开或关闭显示列表,其中触发。如果有一种方法可以派遣自己的广播事件,我不知道它是什么。
不隶属于 StackOverflow