0
我將我的遊戲移動到其自己的包中,以使其在未來的遊戲中很有用。 我實現了一個建築商類的建議這裏的用戶的一個:Interfaces, static classes problem將Builder類暴露給客戶端代碼
public final class Builders {
public static Builder<? extends Sprite> newGameObjectBuilder(Point location, int drawable) {
return new GameObjectImpl.GameObjectBuilder(location, drawable);
}
}
現在的問題是,客戶端代碼不能使用助洗劑的方法(下文實施例)。我得到以下幾點:
"The method onReceiveKey(new Sprite.ReceiveKeys(){}) is undefined for the type Builder<capture#4-of ? extends Sprite>"
基本上我不能使用公共靜態調用GameObjectBuilder內的任何方法。
onReceiveKey
不起作用。只有Builder
接口的build()
方法可用。
public static Sprite newSoldier(int x, int y) {
return Builders.newGameObjectBuilder(new Point(x,y), R.drawable.soldier)
.onReceiveKey(new Sprite.ReceiveKeys() {
@Override
public void onKeyUp(int keyCode, Sprite self, Room room) {
}
@Override
public void onKeyDown(int keyCode, Sprite self, Room room) {
if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
self.moveY(room, 1, Direction.S);
}
else if(keyCode == KeyEvent.KEYCODE_DPAD_UP){
self.moveY(room, -1, Direction.N);
}
else if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){
self.moveX(room, -1,Direction.W);
}
else if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){
self.moveX(room, 1, Direction.E);
}
}
})
.build();
}
當我做Builder時出現語法錯誤。我已經把這個接口放在我的Sprite接口中 –
jax
2010-03-04 11:50:55
我得到了這個工作,但我不得不聲明像這樣SpriteBuilder extends Builder –
jax
2010-03-04 14:22:46
是的,你的第二個評論是要走的路。我會編輯它! – Lombo 2010-03-05 03:20:55