2d游戏常用SurfaceView。
主要代码集中在自己的SurfaceView类。
JBox2D只进行模拟,不进行绘制,所以要在创建Body时在m_userData成员保存绘制相关的信息。Joint同理。
大概框架:
SurfaceView实现Runnable接口,重写run(),不断进行logic、draw。
SurfaceView重写OnTouch函数,响应用户的触屏操作。
对物理世界的改变不能再logic外改变,要将需要操作的对象放到容器中,在world.step模拟完之后进行处理。否则物理模拟时改变物理对象会导致不可预知的后果。
logic:world.step进行物理模拟 ,模拟后更新m_userData中关于位置,角度等信息,之后通过查看容器,对物理对象进行操作。
draw:遍历bodyList和jointList,用m_userData中的绘图函数进行绘制。
android使用JBox2D基本框架如此,JBox2D手册:http://box2d.org/manual.pdf。