像Don说的那样,使用资产上的crossorigin
标志使其与您的<a-sky>
一起工作。
一旦你有了这个,你可以听到img.onload
/loaded
就像你正常的DOM事件。下面我换一个A字架组件,自动挂接到现场里面的一些代码:
<script>
// Do something on asset load.
AFRAME.registerComponent('do-on-asset-load', {
schema: {
src: {type: 'selector'}
},
init: function() {
var el = this.el;
var assetEl = this.data.src;
assetEl.addEventListener('load', function() {
// Do something with your element.
});
}
});
</script>
<a-scene>
<a-assets>
<img id="my-asset" src="https://..." crossorigin="anonymous">
</a-assets>
<a-sky src="#my-asset" do-on-asset-load="#my-asset"></a-sky>
</a-scene>
如果你没有使用的资产,你必须深入到材料抢内部创建的图像:
document.querySelector('a-sky').components.material.material.map.image