如何修复未触发的materialvideoloadeddata事件

时间:2019-04-09 16:00:00

标签: aframe

我正在为360度浏览创建框架,并创建一些弹出窗口,这些弹出窗口会自动调整平面大小以适合其纹理。结果,我希望将事件侦听器添加到平面上,以查看何时加载其材质纹理或视频,然后将其调整为纹理的尺寸。我大部分情况下都使用图像(资产加载引起了一些问题,但是对此我有一些想法),但是视频不起作用。

我对“ materialtextureloaded”的常规事件侦听器不会针对视频触发,因此我尝试使用“ materialvideoloadeddata”,但这似乎也不起作用。当将视频资产用作纹理时,这些事件侦听器均不会触发,但是在使用图像时,加载的纹理将不会触发。

el.addEventListener('materialvideoloadeddata', function(){console.log("videodataloaded");});
el.addEventListener('materialtextureloaded', function(){console.log("materialtextureloaded");});

请注意,当我通过url而不使用资产加载系统设置材料来源时,会触发“ materialtextureloaded”事件。不过,所有视频都已加载到资产系统中,我想从那里加载它们。

触发“ materialvideoloadeddata”:

videoPlayer.setAttribute("material", "src: assets/video/myvideo.mp4');

不触发“ materialvideoloadeddata”:

videoPlayer.setAttribute("material", "src: #' + myvideoId);

我希望资产加载也会触发此事件,但不会。

1 个答案:

答案 0 :(得分:0)

尝试收听实际上<video>元素的loadeddata事件。 https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/loadeddata_event

如果使用选择器,您已经拥有<video>

如果使用URL,则可以通过this.el.getObject3D('mesh').material.map.image获得视频。