Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Frame webvr中动态添加标记_Javascript_Aframe_Webvr - Fatal编程技术网

Javascript 如何在Frame webvr中动态添加标记

Javascript 如何在Frame webvr中动态添加标记,javascript,aframe,webvr,Javascript,Aframe,Webvr,我要做的是单击一个图像,我要在场景中动态添加一个图像。问题是添加了标记,但我无法向其附加src属性。我收到这个警告 核心:架构:警告组件/系统的未知属性srcundefined 我想做的是,当我点击图像时,我希望图像动态显示,当我再次点击时,它应该被销毁。我还想在插入图像时添加动画,就像淡入效果一样。这是我的密码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <

我要做的是单击一个图像,我要在场景中动态添加一个图像。问题是添加了标记,但我无法向其附加src属性。我收到这个警告

核心:架构:警告组件/系统的未知属性
src
undefined

我想做的是,当我点击图像时,我希望图像动态显示,当我再次点击时,它应该被销毁。我还想在插入图像时添加动画,就像淡入效果一样。这是我的密码

    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="aframe.min.js"></script>
    <title>Web VR</title>
</head>
<body>
    <a-scene>
        <a-assets>
            <img id="sky" src="sky.jpg">    
        </a-assets>
        <a-sky color="lightblue"></a-sky>
        <a-image id="a" src="aboutus.jpg" position="0 1.25 -4"></a-image>
        <a-camera position="0 0 3.8">
        <a-cursor id="cursor" color="red">
        </a-cursor>
        </a-camera>
    </a-scene>

<script>
var a=document.getElementById('a');
a.addEventListener('click',function(){
    var b=document. createElement('a-image');
    b.setAttribute('position','0 3.8 3.8');
    b.setAttribute('src','aboutus.jpg');
    a.appendChild(b);
});
</script>
</body>
</html>

网络虚拟现实
var a=document.getElementById('a');
a、 addEventListener('单击',函数()){
var b=document.createElement('a-image');
b、 setAttribute('position','03.83.8');
b、 setAttribute('src','aboutus.jpg');
a、 儿童(b);
});

如果有人能告诉我如何添加动画效果,我也会非常感激。我刚刚学习webvr,从3天以来一直在努力解决这个问题。

我以前遇到过这个问题,解决方法有两个:

  • 您需要将a场景操纵代码包装在window.load事件中
  • 您需要稍微调整.setAttribute()调用的格式


  • 好的,我使用document.createElements(“”,'a-image')实现了这一点;但现在的问题是我看不见它。在控制台中,如果我检查,它将添加到现有的下面,但我看不到图片。非常感谢@PookageHayes。这很有效。只是我必须改变position属性,比如b.setAttribute('position','033.833.8');我已经修改了代码以包含以下内容,它工作得非常好。b、 setAttribute('position','31.25-4');b、 setAttribute(“src”、“aboutus.jpg”)是否有一种方法可以在它来来去去时设置动画?这将对我非常有帮助。您可能需要查看else语句中我添加了另一个元素a-animation并设置以下属性。c、 setAttribute(“id”、“a-ani”);c、 setAttribute(“开始”,“开始”);c、 setAttribute(“放松”、“放松”);c、 setAttribute(“属性”、“比例”);c、 setAttribute(“from”,“0”);c、 setAttribute(“to”,“2”);c、 setAttribute(“dur”、“1000”);然后,我将其作为子对象附加到a图像中。当单击创建图像时,这可以很好地工作。我得到的效果就像它放大到存在状态一样。但在删除图像(即再次单击时)时,我无法获得相同的反转效果。我在“如果”中添加了反转代码,这可能是因为该元素在动画播放之前被删除-您可以通过添加设置超时以等待动画完成来解决此问题,或者在动画中添加一个“animationend”侦听器,并仅在触发时删除该元素。它等待1000毫秒后才被销毁,但仍然没有动画。也许我应该在begin属性中写一些具体的东西?
    window.addEventListener("load", initAFrame);
    
    let addedImage;
    
    function initAFrame(){
    
        let a = document.getElementById("a");
        a.addEventListener("click", createDestroyImage.bind(true, a));
    
    }
    
    function createDestroyImage(a){
    
        if(addedImage){
            a.removeChild(addedImage);
            addedImage = null;
        } else {
            let b = document.createElement("a-image");
            b.setAttribute("position", {
                "x" : 0,
                "y" : 3.8,
                "z" : 3.8
            });
            a.appendChild(b);
            addedImage = b;
        }
    }