你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
Aar0n
赞同来自:
var data:*; data=Loader.getRes(_url); if (!data) { event(Event.ERROR,"file not find"); return; } //保护修改-----start------------------ var atlasData:Object = Loader.getAtlas(_atlasPath); if(!atlasData) { event(Event.ERROR,"file not find"); return; } //保护修改-----end------------------ this.basePath =_atlasPath?Loader.getAtlas(_atlasPath).dir:_url.split(".swf")[0] + "/image/"; _initData(data);
该问题目前已经被锁定, 无法添加新回复
1 个回复
Aar0n
赞同来自:
每次创建一个MC实例,然后调用MC的load方法会去加载MC设置路径关联的图集等文件信息,因为你的代码是放在帧循环里,当前帧创建了一个MC实例,然后调用load去加载新资源,在load方法里有一个操作就是每次load资源之前,需要把之前MC使用过的资源先清理掉,然后在重新load新的资源,目前MC的加载播放机制是这样的。
关于你的MC报错,引擎也的确需要加个保护,判断下图集的信息是否存在,如果不存在就派发一个error事件通知开发者,MC使用的图集信息不存在,目前已安排引擎同事在版本里增加了保护,下个版本提交发布后就有了,临时你也可以通过修改代码来添加保护:添加了这个保护后,代码不会报错,但是你的帧循环使用创建MC不会显示,不显示的原因就是上面说的,下一个MC实例的load把上一次资源给清理掉了,播放调用不到资源,依次循环导致界面不会显示东西。
对于这块,load的实现机制引擎也确实有优化空间,但是,我们建议你选择animiation做序列帧动画,MC动画的性能很低,layaair引擎目前只支持MC的简单动画实现,同场景太多MC性能确实是个问题。animiation组件是性能很高的动画组件。