#yyds干货盘点#three.js源码解读-EventDispatcher

Posted 歆冉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点#three.js源码解读-EventDispatcher相关的知识,希望对你有一定的参考价值。

在three.js中,发现了大量使用Object.assign和Object.create方法,并且很多构造函数都有继承EventDispatcher,现针对EventDispatcher方法研究一下

1.源码

function EventDispatcher()  // 构造函数
Object.assign(EventDispatcher.prototype,

addEventListener: function (type, listener)

if (this._listeners === undefined)
this._listeners = ;


var listeners = this._listeners;

if (listeners[type] === undefined)

listeners[type] = [];



if (listeners[type].indexOf(listener) === -1)

listeners[type].push(listener);



,

hasEventListener: function (type, listener)

if (this._listeners === undefined)
return false;


var listeners = this._listeners;

return listeners[type] !== undefined && listeners[type].indexOf(listener) !== -1;

,

removeEventListener: function (type, listener)

if (this._listeners === undefined)
return;


var listeners = this._listeners;
var listenerArray = listeners[type];

if (listenerArray !== undefined)

var index = listenerArray.indexOf(listener);

if (index !== -1)

listenerArray.splice(index, 1);





,

dispatchEvent: function (event)

if (this._listeners === undefined)
return;


var listeners = this._listeners;
var listenerArray = listeners[event.type];

if (listenerArray !== undefined)

event.target = this;

var array = listenerArray.slice(0);

for (var i = 0, l = array.length; i < l; i++)

array[i].call(this, event);







);

function Texture() // 构造函数

Texture.prototype = Object.assign(Object.create(EventDispatcher.prototype),
test: function()
console.log(test)

)

2.测试代码

const tt = new Texture()
console.log(tt, tt)

#yyds干货盘点#three.js源码解读-EventDispatcher_构造函数

3.核心代码说明

#yyds干货盘点#three.js源码解读-EventDispatcher_jquery_02

如果作如下代码修改

#yyds干货盘点#three.js源码解读-EventDispatcher_构造函数_03

此时的输出结果如下:

#yyds干货盘点#three.js源码解读-EventDispatcher_jquery_04

4.总结

  • three.js中很多构造函数都会继承EventDispatcher构造函数
  • Object.assign方法的使用
  • Object.create方法的使用
  • three.js中的事件监听和其他的框架都是类似的,例如jQuery也是如此来处理,都是相同的原理

以上是关于#yyds干货盘点#three.js源码解读-EventDispatcher的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# mybatis源码解读:cursor包

#yyds干货盘点#愚公系列2022年12月 微信小程序-three.js绘制球体

#yyds干货盘点#three.js中OrbitControls控制器的使用

#yyds干货盘点# mybatis源码解读:executor包(错误上下文)

#yyds干货盘点# mybatis源码解读:executor包(懒加载功能)

#yyds干货盘点#three.js中如何切换相机视角