Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3:我可以将事件从一个子项分派到另一个子项吗?_Actionscript 3_Events_Dispatcher_Children - Fatal编程技术网

Actionscript 3 AS3:我可以将事件从一个子项分派到另一个子项吗?

Actionscript 3 AS3:我可以将事件从一个子项分派到另一个子项吗?,actionscript-3,events,dispatcher,children,Actionscript 3,Events,Dispatcher,Children,嗨,伙计们,我无法解开这个谜:) 如何从Child1发送dispatchEvent并在Child2中捕获此事件 或 如何从Child1发送dispatchEvent并在Child3中捕获此事件 或 如何从Child3发送dispatchEvent并在Child1中捕获此事件 谢谢各位。我会感谢你的帮助 首先,您需要学习如何声明自定义事件并处理它们。 这里有一个来自Adobe的简单指南: 您可能还想在以下链接中了解事件是如何冒泡和捕获的: 现在让我们看一下您询问的案例: 案例1。从儿童1到儿童2:

嗨,伙计们,我无法解开这个谜:)

如何从Child1发送dispatchEvent并在Child2中捕获此事件

如何从Child1发送dispatchEvent并在Child3中捕获此事件

如何从Child3发送dispatchEvent并在Child1中捕获此事件


谢谢各位。我会感谢你的帮助

首先,您需要学习如何声明自定义事件并处理它们。 这里有一个来自Adobe的简单指南:

您可能还想在以下链接中了解事件是如何冒泡和捕获的:

现在让我们看一下您询问的案例:

案例1。从儿童1到儿童2: 本质上,除非儿童2收听儿童1的事件,否则它将无法捕获该事件,因为他们没有父母类型的关系。 您可以执行以下操作:在子1中声明一个事件,并从容器中侦听和捕获它。由于从子1触发事件,容器可以调用子2中的方法

案例2。从儿童1到儿童3: 它与Child 1到Child 3基本相同,只是当容器调用Child 2时,Child 2也调用Child 3

案例3。儿童3对儿童1。子3可以引发一个事件,该事件会一直冒泡到容器。然后,容器可以调用子1中所需的方法


希望这有帮助

虽然我了解您想要实现的目标,但我认为更好的设计方法是允许容器管理其子容器

例如,如果容器接收到来自child1的事件,则容器的角色负责在适当的情况下通知其他子容器。这种方法还可以在容器代码中非常清楚地显示所有容器子级之间的基本交互。如果我检查某人的代码,我会因为这个原因感谢这种方法

也就是说,您可以在child2和child3中使用一个方法,允许您将child1作为参数传递,然后在其中为child1添加一个侦听器。例如:

集装箱内代码:

child2.setChildListener(child1);
child3.setChildListener(child1);
然后在child2和child3中,您可以执行以下操作:

public function setChildListener(childToListenTo:MovieClip):void
{
    childToListenTo.addEventListener(MouseEvent.CLICK, childClickedHandler);
}

private function childClickedHandler(e:MouseEvent):void
{
    // react to the child click here
}

非常感谢哈维尔。我需要一点时间来实现这一切。你明白我的意思,我很高兴。再次感谢。哈维尔,在案例3中,你所说的“会一直冒泡到容器的事件”是什么意思。这对我不起作用:addEventListener(“FromChild3”,onFromChild3);我在child1中得到了这个:dispatchEvent(新事件(“FromChild3”);在Child 31119中:通过静态类型ContainerContainer.addEventListener(“FromChild3”,onFromChild3)的引用访问可能未定义的属性小偷;-什么也没发生;Container.Child2.addEventListener(“FromChild3”,onFromChild3);-错误1119如果我跟踪它们:跟踪(容器)-返回[object ContainerMc];跟踪(Child2)-返回[objectchild2mc];跟踪(Container.Child2)-返回错误1119;对不起,我把这作为一个答案,因为我不知道如何发布这张图片作为评论。如果我违反了规则,我很抱歉。我现在就删除这个。没问题,但你的回答是一个全新的问题。你要求一种方法,然后你试图实施,结果遇到了一个“不同”的问题。是的,我知道这在我脑子里是一团糟。我在下班时间随时都在做这个,不睡觉,不吃饭。我想学这门该死的语言,下次我会小心的。谢谢,沙哈,没问题。最好将问题保持在一个简洁的问题上,因为这使它对那些最终在某个时候遇到相同问题的人最有帮助。