1. 首页
  2. three.js

three.jsEventDispatcher用于什么以及如何使用它?

我已经提出了一个关于StackOverflow的问题,但它并没有让我达到我需要的位置,所以我来问问题的来源。n我现在只想发布一个链接,因为我不确定政策是什么。我意识到我不想跨越帖子,浪费人们的时间。stackoverflow.com可以three.jsEventDispatcher可用于类之间的通信?32、javascript、ecmascript-6、,three.js,分配在协调世界时10月18日07日下午3:17到07时询问n有人能给我指点路吗?nEventDispatcher用于提供类a事件驱动API。因此,如果一个类扩展了EventDispatcher,就可以将事件侦听器添加到它的具体对象中。当然,也可以删除它们,并测试对象是否已经设置了特定的事件侦听器。此外,您可以使用.dispatchEvent()将特定类型的事件分派给所有相应的事件侦听器。必须强调的是,只调用此特定对象的事件侦听器,而不调用其他对象的事件侦听器。这就是为什么您在stackoverflow上发布的代码不起作用的原因。EventDispatcher不是发布/订阅机制。在我看来,你实际上是在寻找这样的东西41。n让我给你介绍一下EventDispatcher在three.js中的两个典型用法:n- EventDispatcher在物体处理的上下文中使用。当您对Texture、Material或Geometry的实例调用.dispose()时,.dispatchEvent()将创建类型为dispose的事件。WebGLRenderer为所有这些对象注册了事件侦听器,因此它可以对这些事件作出反应并执行清理任务。n- EventDispatcher用于控件开发。如果您创建了一个GamePad类,该类应具有基于事件的API,EventDispatcher为此提供了必要的方法。一个很好的例子是PointerLockConrols,它在控件锁定/解锁鼠标光标时通知其他组件一个事件。github.commrdoob/three.js/blob/0d808345069701da51833ffb1de87c9d73433e72/examples/js/controls/PointerLockControls.js#L42 26n1. pitchObject.rotation.x>n2. }n3. function onPointerlockChange() {n4. if ( document.pointerLockElement === scope.domElement ) {n5. scope.dispatchEvent( { type: \”lock\” }>n6. } else {n7. scope.dispatchEvent( { type: \”unlock\” }>n8. }n应用程序级代码如下所示此:github.commrdoob/three.js/blob/0d808345069701da51833ffb1de87c9d73433e72/examples/misc_controls_pointerlock.html#L121-L126 7n1. controls.addEventListener( \”lock\”, function ()>n2. } );n谢谢,这解释得很清楚。n您是否尝试了第一段代码?pubsubs可能更丰富,但您可以使用3eventdispatcher创建这样的模式。语法看起来非常相似。n愚蠢的问题,但是你真的在另一个文件中import Events from \”Events\”了吗?n What is EventDispatcher for and how is it used?n

three.jsEventDispatcher用于什么以及如何使用它? 为WP2原创文章,链接:https://www.wp2.cn/three-js/three-jseventdispatcher%e7%94%a8%e4%ba%8e%e4%bb%80%e4%b9%88%e4%bb%a5%e5%8f%8a%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8%e5%ae%83%ef%bc%9f/