在搭android的框架的时候,由于需要先把游戏的资源从apk包里考出来到sd卡上,
考虑再起一个线程专门处理拷贝和之后的更新,在拷贝过程中,发现asset目录下的资源,没有接口可以判断是文件,还是目录
所以只能通过判断文件名的方式,如果其中有'.'就认为是文件。
拷贝结束后,就需要初始化游戏引擎了,由于android上gl有一个专门的thread处理,所以,初始化引擎的工作,和渲染的工作都必须放到那个线程里去做
这样就涉及到线程同步的问题。
拷贝完成的时候的通信 Copythread---->MainThread---->GLThread
初始化完成 GLThread---> MainThread (隐藏到loadingview)
子线程往主线程发消息,自定义一个Activity的Handler,
Message msg = new Message();
msg.what = EchoesHandler.HANDLER_COPY_COMPLETE;
msg.obj = new EchoesHandler.CopyComplete();
mHandler.sendMessage(msg);
然后再自定义的Handler里public void handleMessage(Message msg)
主线程往GL线程发消息,主要是GLSurfaceView通过
this.queueEvent(new Runnable() {
@Override
public void run() {
// 做GL线程相关的事情
}
});
把需要处理的事件放到GLThread的队列里去。