[LayaAir2]在使用videoDom创建视频元素后iPad跟iPhone中位置不一样

在ipad中.png 在iphone中.png
已邀请:

Laya_XS

赞同来自:

因为你没有提供相应的demo来描述的问题,目前也不好分析。参考你上面的情况描述,应该是需要做html dom节点适配处理。你可以采用另一种方式来实现,这样可以不用考虑到位置的适配设置,参考代码片段:
/**
* example:videodom 使用Laya.HtmlVideo播放视频
* @ author:xs
* @ data: 2024-03-05 16:20
*/
export default class VideoDom {
htmlvideo:Laya.HtmlVideo;
constructor() {
Laya.stage.on(Laya.Event.CLICK,this,this.onClick);
}

onClick(){
this.initVideo();
}
initVideo() {
this.htmlvideo = new Laya.HtmlVideo();
this.htmlvideo.setSource("https://www.layaair.com/3.x/de ... ot%3B,1);
this.htmlvideo.video.addEventListener("loadedmetadata",()=>{
var videoTexture:Laya.VideoTexture = new Laya.VideoTexture();
videoTexture.video = this.htmlvideo.video;
videoTexture.video.play();
videoTexture.video.loop = true;
var texture2D = new Laya.Texture2D(videoTexture.video.videoWidth,videoTexture.video.videoHeight);
var texture:Laya.Texture = new Laya.Texture(texture2D);

var image:Laya.Image = new Laya.Image();
image.texture = texture;
image.width = videoTexture.video.videoWidth;
image.height = videoTexture.video.videoHeight;
image.pos(100,100);
Laya.stage.addChild(image);
//目前LayaAir2.0引擎暂时没有提供刷新纹理机制,需要手动刷新。或者你可以试用LayaAir3.0引擎,那边实现videoTexture不用自己手动刷新
Laya.timer.frameLoop(1, this, this.updateVideo, [texture2D]);

},true);
}

updateVideo(tempTexture:Laya.Texture2D){
if(this.htmlvideo.video.readyState === this.htmlvideo.video.HAVE_ENOUGH_DATA) {
//更新视频纹理
tempTexture.loadImageSource(this.htmlvideo.video);
}
}
}

如果使用上述代码遇到问题,在继续提交新问题。

Laya_XS

赞同来自:

videoDom采用的是html的原生标签实现的视频播放,这个有个最大的缺点:就是如果videoDom跟引擎界面的ui布局结合使用,你不好做环境的适配处理,这个估计要把当时人搞崩溃

要回复问题请先

商务合作
商务合作