나는 box2d와 andEngine을 사용하는 법을 배우고있다. 나는 몸짓으로 내 스프라이트를 만들려고 노력하고있다. 전에 onCreateScene에서 모든 것을 코딩했을 때 작동하도록 만들었지 만 이제는 내 스프라이트에 대해 별도의 클래스를 만들고 싶습니다.andEngine : 터치 이벤트가 작동하지 않는 이유는 무엇입니까?
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 클래스는 다음과 같습니다 : 그래서 지금 내 onCreateScene은 다음과 같습니다
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));
}
}
내 스프라이트가 제대로 표시되지만 터치 이벤트가 작동하지 않습니다. 내가 놓친 게 있니?
그게 내가 의심 스럽지만 해결 방법에 대한 아이디어가 없었습니다. 나는 그것을 변경하려고 시도 할 것이다 –
좋아, 그렇게 많이 성공하지 못한 후에 나는 생성자의 createPhysics를 사임하고 단지 'code'Kapsel kapsel = new Kapsel (...)과 kapsel.createphysics (physicsworld)와 같은 Kapsel을 inicializing 한 후에 사용한다. 하지만 여전히 작동하지 않습니다. 문제는 실제로 onAreaTouched 메서드에 있습니까? –
시체를 제거해도 여전히 작동하지 않기 때문에 priblem이 onAreaTouched 메서드에있는 것처럼 보입니다. –