问题描述:
今天cailven用pv3d做Parkroyal Mt demo的时候一直很卡,经过他反复测试,发现是因为里面反复使用了pv3d内建的removeChild()方法。一开始认为是贴图无法被清空造成的,后来他改成了线框贴图,依然很卡。
今天cailven用pv3d做Parkroyal Mt demo的时候一直很卡,经过他反复测试,发现是因为里面反复使用了pv3d内建的removeChild()方法。一开始认为是贴图无法被清空造成的,后来他改成了线框贴图,依然很卡。
问题分析:
他的代码是这样的。
他的代码是这样的。
var agency:DisplayObject3D=new DisplayObject3D();
agency.removeChild(beforetarget);
scene.addChild(beforetarget);
scene.removeChild(nowtarget);
agency.addChild(nowtarget);
beforetarget=nowtarget;
他一开始以为是贴图信息无法清楚造成的,后来把材质改成了线框去跑,依然卡的不行,一打开时候有27fps,这段代码运行个20多遍在线框的情况下依然变成了5fps。
但是我的项目要求又必须得大量使用加载入容器,然后移除到场景的方法。
现在确定就是这段代码惹得祸,只要不removeChild,不addChild,程序可以一直维持27fps,一用就开始越来越卡。
问题解决:
因为pv3d的内建removeChild有bug不完善,所以他跳过了这个步骤,直接使用了代码:
因为pv3d的内建removeChild有bug不完善,所以他跳过了这个步骤,直接使用了代码:
var agency:DisplayObject3D=new DisplayObject3D();
agency=nowtarget;
直接用agncy指过去,运行下来确实不卡了。
(感谢Cailven提供)
为什么会出现nowtarget
作为camera目标,应该是target,或lookAt
这是我自己定义的Object3D