Javascript A框架组件可以';t引用事件处理程序中的el
我正在尝试使用lance gg库编写一个游戏。 我尝试实现一个简单的aframe组件,它可以打印实体在世界空间中的object3D位置和旋转。 问题是,我无法从组件事件侦听器中访问Javascript A框架组件可以';t引用事件处理程序中的el,javascript,aframe,lance,Javascript,Aframe,Lance,我正在尝试使用lance gg库编写一个游戏。 我尝试实现一个简单的aframe组件,它可以打印实体在世界空间中的object3D位置和旋转。 问题是,我无法从组件事件侦听器中访问此 我试着四处搜索,找到了这个[thread](),所以我想问题在于初始化顺序。我曾尝试直接从索引中包含一个组件,但它也不起作用 // aSeparateFile.js AFRAME.registerComponent( 'custom-component', { schema: {
此
我试着四处搜索,找到了这个[thread](),所以我想问题在于初始化顺序。我曾尝试直接从索引中包含一个组件,但它也不起作用
// aSeparateFile.js
AFRAME.registerComponent(
'custom-component',
{
schema: {
controllerID: {
type: 'string',
default: 'none'
}
},
init: () => {
console.log('componet has been created');
console.log(this);
},
tick: () => {
console.log(this.el.object3D.rotation);
console.log(this.el.object3D.position);
}
}
);
这个组件是在一个名为aSeparateFile.js
的单独文件中创建的,我从AFrameRenderer扩展名中包含了这个文件。像这样:
import {AFRAMERenderer} from 'lance-gg';
import './aSeparateFile.js';
我想知道向lance gg注册自定义组件的最佳方法。不要使用会将方法绑定到错误的this
。改用常规函数:
AFRAME.registerComponent(
'custom-component',
{
schema: {
controllerID: {
type: 'string',
default: 'none'
}
},
init: function () {
console.log('componet has been created');
console.log(this);
},
tick: function () {
console.log(this.el.object3D.rotation);
console.log(this.el.object3D.position);
}
});