Live2dHistoire
                                
                                 Live2dHistoire copied to clipboard
                                
                                    Live2dHistoire copied to clipboard
                            
                            
                            
                        图片预加载没有生效
载入的时候有微妙的延迟,我看了眼代码,是先用img src下载图片再初始化,但是初始化并没有用到缓存的文件,于是造成了微妙的延迟,不知道是不是我浏览器兼容性的问题,看F12的NetWordk中图片的确是先加载完毕了,但是初始化的时候又去下了同样的图片一次,也就是虽然预下载了但是并没有用预下载的图片。 可以想到的原因大概就是,Live2d.js中的初始化方法并没有加判断而是直接请求的对应模型图片地址,而浏览器不一定会去读缓存造成的,但是Live2d.js并没有map文件...想跟还是想改都没有办法
我找了个曲线救国的方案..写一个定时器,不断的输出canvas画布中图片的base64的长度,当大于10000时显示...基本没问题..就是有点不能释然...看看有没有别的解决方案..
我也是没有图片显示,求大佬分享下曲线救国的代码
@fish99 启动代码,我改成这样了,这个样子还一个好处可以换自己喜欢的模型,而需要修改的部分很少...
		var model = "model/histoire/model.json";
		loadlive2d("live2d", message_Path+model);
		var askOver = setInterval(function(){
			var imgData = $('#live2d')[0].toDataURL("image/png").length
			if(imgData>100000){
				clearInterval(askOver);
				showLive2d();	
			}
		},1000)
        function showLive2d(){
            var live2dhidden = localStorage.getItem("live2dhidden");
            if(live2dhidden==="0"){
                setTimeout(function(){
                    $('#open_live2d').fadeIn(200);
                },1300);
            }else{
                setTimeout(function(){
                    $('#landlord').fadeIn(200);
                },1300);
            }
            initLive2d ();
        }
    });
@fish99 启动代码,我改成这样了,这个样子还一个好处可以换自己喜欢的模型,而需要修改的部分很少...
var model = "model/histoire/model.json"; loadlive2d("live2d", message_Path+model); var askOver = setInterval(function(){ var imgData = $('#live2d')[0].toDataURL("image/png").length if(imgData>100000){ clearInterval(askOver); showLive2d(); } },1000) function showLive2d(){ var live2dhidden = localStorage.getItem("live2dhidden"); if(live2dhidden==="0"){ setTimeout(function(){ $('#open_live2d').fadeIn(200); },1300); }else{ setTimeout(function(){ $('#landlord').fadeIn(200); },1300); } initLive2d (); } });
方法是不错,就是消耗点性能。
@eeg1412
其实消耗不了多少...一秒一次,一般不会超过十次,取决于网速....
后面我发现,有的时候明明有图像但是toDataURL 取不到内容..所以加个限制 ,最多轮询8次无论渲染与否直接显示...
实在追求性能其实可以改live2d.js...把它格式化后6284行,有一个stopAllMotions,这个函数会在所有得模型文件加载完毕时触发,把showLive2d写在全局,然后在这里调用几乎不会有延时...模拟3G网络载入也没问题...
@eeg1412 其实消耗不了多少...一秒一次,一般不会超过十次,取决于网速.... 后面我发现,有的时候明明有图像但是toDataURL 取不到内容..所以加个限制 ,最多轮询8次无论渲染与否直接显示... 实在追求性能其实可以改live2d.js...把它格式化后6284行,有一个stopAllMotions,这个函数会在所有得模型文件加载完毕时触发,把showLive2d写在全局,然后在这里调用几乎不会有延时...模拟3G网络载入也没问题...
大佬,学习到了!
@fish99 启动代码,我改成这样了,这个样子还一个好处可以换自己喜欢的模型,而需要修改的部分很少...
var model = "model/histoire/model.json"; loadlive2d("live2d", message_Path+model); var askOver = setInterval(function(){ var imgData = $('#live2d')[0].toDataURL("image/png").length if(imgData>100000){ clearInterval(askOver); showLive2d(); } },1000) function showLive2d(){ var live2dhidden = localStorage.getItem("live2dhidden"); if(live2dhidden==="0"){ setTimeout(function(){ $('#open_live2d').fadeIn(200); },1300); }else{ setTimeout(function(){ $('#landlord').fadeIn(200); },1300); } initLive2d (); } });
请问dalao是改的哪一个文件的哪一段位置?
@hanzerruid https://github.com/eeg1412/Live2dHistoire/blob/426ef91b5ad49d87abed729d233ee06ebdaa87ed/live2d/js/message.js#L448 从这里开始是初始化的入口...