次の問題があります:クラスがあります
public class HockeyActivity extends SimpleBaseGameActivity implements IOnSceneTouchListener, IOnAreaTouchListener {
そして、このクラス宣言内:
final Player player= new Player( PhysicsFactory.createCircleBody( this.mPhysicsWorld, player.face, BodyType.DynamicBody,CIRCLE_FIXTURE_DEF));
ここでJavaは見つからなかったと叫ぶplayer.face
そして、HockeyActivity クラス内の Player クラスの宣言:
class Player {
final Body facebody;
final Sprite face = new Sprite(HockeyActivity.CAMERA_WIDTH / 2 + 200f,
240, HockeyActivity.mFaceTextureRegion,
getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent,
final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
switch (pSceneTouchEvent.getAction()) {
case TouchEvent.ACTION_MOVE:
// Here 'body' refers to the Body object associated with
// this sprite
facebody.setTransform(pSceneTouchEvent.getX(),
pSceneTouchEvent.getY(), facebody.getAngle());
break;
default:
break;
}
return true;
}
};
Player(Body f) {
facebody = f;
}
}
最終的なものを変更せずに対処する方法は? getVertexBufferObjectManager()
また、 HockeyActivity クラスで宣言されているため、静的にすることはできません。
final VertexBufferObjectManager vertexBufferObjectManager = this.getVertexBufferObjectManager();
問題に対処する私の別の方法:
final Sprite face = new Sprite(CAMERA_WIDTH/2+200f, 240, this.mFaceTextureRegion, this.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
switch(pSceneTouchEvent.getAction()){
case TouchEvent.ACTION_MOVE:
//Here 'body' refers to the Body object associated with this sprite
facebody.setTransform(pSceneTouchEvent.getX(), pSceneTouchEvent.getY(), facebody.getAngle());
break;
default:
break;
}
return true;
}
// 数行後:
final Body facebody = PhysicsFactory.createCircleBody( this.mPhysicsWorld, face, BodyType.KinematicBody,CIRCLE_FIXTURE_DEF);
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face,facebody, true, true));
facebody.setUserData("player1");
しかし、メソッドをオーバーライドすると、宣言final Sprite face
が表示されないため、問題は内部にあります。facebody
このオーバーライド メソッドに facebody を表示させるにはどうすればよいですか?