我有一個「目標圓」組件,它是一個帶圓環的簡單圓圈。我試圖爲整個組件獲取mouseenter和mouseleave事件,但附屬於父級元素的事件偵聽器會爲子實體觸發元素,並且只有在raycaster點擊某個元素時觸發。A框架:mouseenter/mouseleave僅適用於父實體
我試圖用各種方法將隱形命中測試圈/戒指放在試圖緩解問題的位置,但它們都有多個進入/離開事件觸發子實體的核心問題。
它是可行的/什麼是最好的方式來獲得進入/離開整個父實體的事件?
演示:https://output.jsbin.com/tucuxas/quiet
<!DOCTYPE html>
<html>
<head>
<script src="https://aframe.io/releases/0.6.0/aframe.min.js"></script>
<script>
AFRAME.registerComponent('target-circle', {
schema: {
position: {type: 'vec3', default: {x: 0, y: 0, z: 0}}
},
init: function() {
var el = this.el;
el.setAttribute('position', this.data.position);
el.object3D.lookAt(new THREE.Vector3(0, 0, 0));
var outerRing = document.createElement('a-entity');
outerRing.setAttribute('class', 'outerRing');
outerRing.setAttribute('material', {
color: 'black'
});
outerRing.setAttribute('geometry', {
primitive: 'ring',
radiusInner: '1.2',
radiusOuter: '1.4'
});
var innerCircle = document.createElement('a-entity');
innerCircle.setAttribute('class', 'innerCircle');
innerCircle.setAttribute('material', {
color: 'black'
});
innerCircle.setAttribute('geometry', {
primitive: 'circle',
radius: '0.3'
});
el.appendChild(outerRing);
el.appendChild(innerCircle);
el.addEventListener('mouseenter', function() {
console.log('mouseenter');
});
el.addEventListener('mouseleave', function() {
console.log('mouseleave');
});
}
});
</script>
</head>
<body>
<a-scene>
<a-entity target-circle='position: 0 3 -10'></a-entity>
<a-entity camera look-controls>
<a-entity id="cursor" cursor="fuse: false;" material="color: black; shader: flat;"
position="0 0 -1"
geometry="primitive: ring; radiusInner: 0.001; radiusOuter: .005; "></a-entity>
</a-entity>
</a-scene>
</body>
</html>
你想要的mouseenter /留給環內工作的空白區域? –
我希望它能夠在整個組件上工作,以便在光標通過外部黑色環時獲得一個鼠標中心。然後,當你進入空白區域或內圈時沒有任何事件發生,如果你將外部黑圈退出到場景的其餘部分,則最後會有一個鼠標輪。謝謝! :) – Stephen
使用pointer-events:none;子元素的CSS屬性 – SamB