当前位置: 首页 > 知识库问答 >
问题:

悬停动画上的A帧(mouseleave、mouseenter)

郎琪
2023-03-14

我有一个场景,其中有“mouseEnter”对象触发其他对象的动作:

<a-entity class="hover" position="1.3 1.5 0" rotation="0 90 0">
    <a-entity mixin="hoverbox"></a-entity>
    <a-obj-model src="#profile1" scale="0.01 0.01 0.01" material="height: 512; width: 512" mixin="skybox">
        <a-animation attribute="rotation" dur="10000" easing="linear" fill="forwards" to="0 360 0" repeat="indefinite"></a-animation>
        <a-animation attribute="position" dur="300" to="0 0 -.5" begin="hoveron"></a-animation>
        <a-animation attribute="position" dur="300" to="0 0 0" begin="hoveroff"></a-animation>
    </a-obj-model>
</a-entity>

这是hoverbox Mixin:

<a-mixin id="hoverbox" class="hoverbox" material="color:#fff; opacity:.5;" geometry="primitive: sphere; radius: .45;"></a-mixin>

和附加的javascript:

var sceneEl = document.querySelector('a-scene');
var hoverEls = sceneEl.querySelectorAll('.hover');
for(var i = 0; i < hoverEls.length; i++) {
    var hoverEl = hoverEls[i];
    hoverElBox = hoverEl.querySelector('a-entity');
    hoverElBox.addEventListener('mouseenter', function(evt) {
        // evt.stopPropagation();
        console.log('mouseenter', evt);
        evt.target.nextElementSibling.emit('hoveron');
    }, true);
    hoverElBox.addEventListener('mouseleave', function(evt) {
        // evt.stopPropagation();
        console.log('mouseleave', evt.target.parentNode);
        evt.target.nextElementSibling.emit('hoveroff');
    }, true);
}

当用户悬停'hoverbox'球体时,这将触发元素的重新定位。当光标离开Hoverbox时,它还触发返回到其正常位置。

cursor元素如下所示:

<a-entity cursor="fuse:true, fuseTimeout: 50;" raycaster="far: 10; objects: .hoverbox" />

因此它不会在其他对象上发出事件。

然而,这种行为有点不正常。有时,当光标离开球体时,'hoveroff'事件不会被触发,而另一些时候球体只是不注册mouseEnter。

有人知道怎么做吗?

查看这里的完整代码:http://vr.dco.rocks/

共有1个答案

严永丰
2023-03-14

这是在a帧主分支https://github.com/aframevr/aframe/commit/e4900e16ea9228af39d2a4fef6798393e79bd82a上修复的,尽管代码中仍然有一些扭结。

A框0.2.0可能更可靠,也可能不更可靠?

 类似资料:
  • 问题内容: 当您将鼠标悬停在某个元素上时,我会旋转它。悬停时,动画将停止。简单: 但是,当您将鼠标悬停时,动画会突然停止,恢复为0度。我想重新设置动画位置,但是在语法设计上遇到了一些麻烦。 任何输入都会很棒! 问题答案: 解决方案是在.elem中设置默认值。但是此动画可以与-moz一起正常使用,但尚未在-webkit中实现 它可以在Firefox上正常运行,但不能在Chrome上运行

  • 这是我的代码: null null 目前,动画似乎暂停悬停,但如果你取消悬停,你可以看到总是突然显示下一个div。所以它并不是真正的“暂停”,它只是停止然后显示下一个div。持续时间丢失。 怎么可能修复呢? 会非常感谢你的帮助!

  • 问题内容: 是否有某种方法可以阻止动画播放?我当时正在考虑为gif分配一个静态jpg,然后当我将鼠标悬停时分配给gif动画,但是我认为没有发生将鼠标取下的事件,因此可以加载静态jpg。 gif在按钮中循环,但是,如果我将鼠标悬停在它上面,它将消失。 如果鼠标光标不在按钮上,如何使gif静态化? 如果使用,如果我取下鼠标,是否会触发事件? 问题答案: 看到: 无需设置显式鼠标侦听器,切换将自动发生。

  • 帧动画模块可以将一系列BK.TextureInfo对象进行播放,构成动画效果。 父类:BK.Sprite 构造函数 BK.AnimationSprite(textureInfoArray) 通过textureInfoArray数组创建一个帧动画对象 手Q版本:7.6.3 textureInfoArray: 参数名 类型 textureInfoArray Array BK.TextureInfo可以

  • 问题内容: 我有以下代码: 执行javascript函数后,动画会停止,但会突然停止。 我可以平稳地停止动画,以避免突然跳入,然后从停止的位置再次继续动画吗? 问题答案: 您不会喜欢这个答案,但现实是CSS3动画对于实现此目的并不是真正有用。为了完成这项工作,您需要在Javascript中复制很多CSS,这会破坏点(例如,在此密切相关的答案中,例如,[更改动画CSS3的速度?)。要真正使它平稳停止

  • 我在IE上的css悬停有问题。 简化;我基本上有一个容器div,它将在悬停时显示一个小的div,里面有一些标记中选择一个,:hover由于某种原因将不再工作,div将消失。 在chrome/firefox等中尝试此示例以查看所需的结果&然后在IE11中再试一次以查看问题所在。 null null