Android 安卓和引擎的场景是缓慢的,当附加许多孩子呢?
我正在开发一个引擎应用程序。在这篇文章中,我在用户单击时插入精灵,并使用小矩形绘制一个圆。我通过循环创建了许多矩形,并将它们排列在一条圆形的路径上,所以它看起来像一个圆形。但问题是屏幕响应缓慢,看起来像是挂着的。有人能建议我如何使它更平滑吗。。 这是我的密码 //变数Android 安卓和引擎的场景是缓慢的,当附加许多孩子呢?,android,andengine,physics,rectangles,scene,Android,Andengine,Physics,Rectangles,Scene,我正在开发一个引擎应用程序。在这篇文章中,我在用户单击时插入精灵,并使用小矩形绘制一个圆。我通过循环创建了许多矩形,并将它们排列在一条圆形的路径上,所以它看起来像一个圆形。但问题是屏幕响应缓慢,看起来像是挂着的。有人能建议我如何使它更平滑吗。。 这是我的密码 //变数 private static final FixtureDef FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f); private BitmapT
private static final FixtureDef FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f);
private BitmapTextureAtlas mBitmapTextureAtlas;
private TiledTextureRegion mBoxFaceTextureRegion;
private Scene mScene;
private PhysicsWorld mPhysicsWorld;
//场景法
@Override
public Scene onCreateScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());
this.mScene = new Scene();
this.mScene.setBackground(new Background(0, 0, 0));
this.mScene.setOnSceneTouchListener(this);
this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false);
final VertexBufferObjectManager vertexBufferObjectManager = this.getVertexBufferObjectManager();
final Rectangle ground = new Rectangle(0, CAMERA_HEIGHT - 2, CAMERA_WIDTH, 2, vertexBufferObjectManager);
final Rectangle roof = new Rectangle(0, 0, CAMERA_WIDTH, 2, vertexBufferObjectManager);
final Rectangle left = new Rectangle(0, 0, 2, CAMERA_HEIGHT, vertexBufferObjectManager);
final Rectangle right = new Rectangle(CAMERA_WIDTH - 2, 0, 2, CAMERA_HEIGHT, vertexBufferObjectManager);
final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(0, 0.5f, 0.5f);
PhysicsFactory.createBoxBody(this.mPhysicsWorld, ground, BodyType.StaticBody, wallFixtureDef);
PhysicsFactory.createBoxBody(this.mPhysicsWorld, roof, BodyType.StaticBody, wallFixtureDef);
PhysicsFactory.createBoxBody(this.mPhysicsWorld, left, BodyType.StaticBody, wallFixtureDef);
PhysicsFactory.createBoxBody(this.mPhysicsWorld, right, BodyType.StaticBody, wallFixtureDef);
this.mScene.attachChild(ground);
this.mScene.attachChild(roof);
this.mScene.attachChild(left);
this.mScene.attachChild(right);
drawLine();
this.mScene.registerUpdateHandler(this.mPhysicsWorld);
return this.mScene;
}
//抽绳法:
private void drawLine() {
float x1,y1,x2=1,y2=1;
float r=100;
float xCenter=300,yCenter=300;
Rectangle rectTest;
for(double i=0;i<5;i+=.01){
x1 = (float) (xCenter + r * Math.cos(i));
y1 = (float) (yCenter + r * Math.sin(i));
System.out.println("RECT x1="+x1);
System.out.println("RECT y1="+y1);
System.out.println("RECT x2="+x2);
System.out.println("RECT y3="+y2);
rectTest = new Rectangle(x1,y1,1,1,getVertexBufferObjectManager());
rectTest.setColor(Color.RED);
FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(0,
0.1f, 0.1f);
PhysicsFactory.createBoxBody(this.mPhysicsWorld, rectTest,
BodyType.StaticBody, wallFixtureDef);
this.mScene.attachChild(rectTest);
}
}
private void drawine(){
浮点数x1,y1,x2=1,y2=1;
浮点数r=100;
浮点xCenter=300,yCenter=300;
矩形试验;
对于(双i=0;i问题可能是您正在使用Box2D创建500个动态身体对象。Box2D或任何物理引擎在移动平台上的成本相对较高。模拟500个碰撞的身体已经超出了移动处理器的处理能力。请尝试使用不到50个对象来定义您的圆。感谢Sturgeon的提问uick响应。实际上,我正在尝试画一个圆圈,并具有检测碰撞和墙属性的功能(如矩形)。这样我就可以检测到球与圆壁的碰撞。所以我决定用矩形画一个圆。有没有办法做同样的任务。请建议。我被卡住了。我不知道你想从你的描述中做出什么,但我会建议两件事:1-在Box2D中有一个圆形状,你可以使用。2:你可以使用一个名为PHYSICS EDITOR程序的程序从png图像为你的box2d项目生成任意形状的多边形:我在自己的项目中使用过这个程序,强烈推荐。它是否适用于ubuntu?我不知道。你可以问开发人员。该网站只列出Mac和PC。它不是唯一的box2d编辑器。(你有时也可以使用Cocos2D)只需搜索一下就可以找到一个工具。我推荐Physics Editor,因为我用过它,它很管用。