日期:2014-05-20  浏览次数:20718 次

多线程,资源加载与进度条一些问题求解
1.如何根据加载资源的情况实时显示进度条?两个线程同步进行?给个思路或者范例
2.游戏当中有资源加载,请问一般是什么样的资源进行加载,如何加载,会那么费事,是因为资源比较多,使用了多线程的原因吗?
3.资源加载是加载什么?内存对象初始化?还是什么,会那么费事呢?特别是游戏当中

------解决方案--------------------
一般加载配置文件可以用静态代码块static{...},如果你要加载用户信息、时间、其他业务需求,可以写一个init方法,在这个方法里面调用各自的加载的方法,
------解决方案--------------------
扫描所有资源文件,记录总数,然后每个线程去按需要扫描不同类型资源,每加载一个,计数器+1,然后进度条百分比就根据这个算, 参考synchronized、Lock、volatile用法等
------解决方案--------------------
加载游戏资源主要是贴图、模型、某些声音,这些都是大量磁盘操作,所以很慢
------解决方案--------------------
你加载资源的时候肯定有一个资源列表吧,你肯定知道每个资源有多大吧,当你加载了某几个资源后,你就大概能算出加载一个多大的资源要多久,这就是估算了。其实跟你复制文件的道理一样,只不过加载资源就是把东西复制到内存里而不是另一个磁盘而已
------解决方案--------------------
资源列表,是非常有用的东西,特别是在多线程的状态下,建议一定要造一个。
------解决方案--------------------
引用:
Quote: 引用:

扫描所有资源文件,记录总数,然后每个线程去按需要扫描不同类型资源,每加载一个,计数器+1,然后进度条百分比就根据这个算, 参考synchronized、Lock、volatile用法等

哦。。。。谢谢了。。。。那比如说有些资源加载能够预估出时间,这个是怎么计算出来的?加载内存的时候有某些算法?

剩余时间可参考下载工具的下载剩余时间,统计最近1秒内的资源加载量,然后你有个资源文件总大小,除一下,然后得到多少秒,计算剩余时间就行了