gpt4 book ai didi

java - andEngine:为什么触摸事件不起作用?

转载 作者:行者123 更新时间:2023-12-01 12:04:50 25 4
gpt4 key购买 nike

我正在学习如何使用 box2d 和 andEngine。我试图让我的 Sprite body 移动。我之前在 onCreateScene 中编写所有内容时就让它工作了,但现在我想为我的 Sprite 创建一个单独的类。所以现在我的 onCreateScene 看起来像这样:

    mScene = new Scene();
mScene.registerUpdateHandler(physicsWorld);
Kapsel kapselBialy = new Kapsel(100, 100, 100, 100, ResourceManager.getInstance().mBialyKapselRegion, getVertexBufferObjectManager(), physicsWorld);
mScene.registerTouchArea(kapselBialy);
mScene.setTouchAreaBindingOnActionDownEnabled(true);
mScene.attachChild(kapselBialy);
pOnCreateSceneCallback.onCreateSceneFinished(mScene);

我的 Kapsel 类如下所示:

public class Kapsel extends Sprite  {

private Body body;


public Kapsel(float pX, float pY, float pWidth, float pHeight,
ITextureRegion pTextureRegion,
VertexBufferObjectManager pVertexBufferObjectManager, PhysicsWorld physicsWorld) {
super(pX, pY, pWidth, pHeight, pTextureRegion, pVertexBufferObjectManager);
createPhysics(physicsWorld);


}
//definiowanie zahchowań po dotyku
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){

if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_UP){

body.setLinearVelocity(-((pSceneTouchEvent.getX()/32 - body.getPosition().x) * 10), -((pSceneTouchEvent.getY()/32 - body.getPosition().y) * 10));

}

return true;
}

//Tworzenie ciała i fizyki dla kapsla
private void createPhysics(PhysicsWorld physicsWorld){
body = PhysicsFactory.createCircleBody(physicsWorld, this, BodyType.DynamicBody, PhysicsFactory.createFixtureDef(1.0f, 0.5f, 0.5f));
physicsWorld.registerPhysicsConnector(new PhysicsConnector(this, body, true, true));
}
}

我的 Sprite 显示正常,但触摸事件不起作用。我错过了什么吗?

最佳答案

Kapsel 中,您从构造函数中引用 this。发生这种情况是因为构造函数调用 createPhysics,后者又调用 physicalsWorld.registerPhysicsConnector(newPhysicsConnector(this, body, true, true))。请注意 this 在传递给 PhysicsConnector 构造函数时是如何被引用的。

至少可以说,在构造函数中以这种方式引用 this 并不是一个好主意。您可以阅读有关此主题的更多内容 here .

我很确定这就是您遇到问题的原因。尝试重新排列代码,以免发生这种情况。你可以看看一些建议here如何解决此类情况。

关于java - andEngine:为什么触摸事件不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27694786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com