嗨,我刚刚开发的Android和我有一些麻烦我的精灵没有正确加载。在我开始添加AnalogOnScreenControl之前,我的代码非常好,现在我的所有精灵包括我的AnalogOnScreenControl只显示一个黑盒子。控件上的小块也是黑色的。唯一不是黑色的东西是黑地和地面本身。继承我的代码:
public class MainActivity extends BaseGameActivity {
Scene scene;
protected static final int CAMERA_WIDTH = 256;
protected static final int CAMERA_HEIGHT = 144;
BitmapTextureAtlas playerTexture;
ITextureRegion playerTextureRegion;
PhysicsWorld physicsWorld;
private Camera mCamera;
private TextureRegion controlTextureRegion;
private TextureRegion controlNubTextureRegion;
@Override
public EngineOptions onCreateEngineOptions() {
// TODO Auto-generated method stub
mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); // Camera
// Defines
// How
// we
// see
// the
// screen
EngineOptions options = new EngineOptions(true,
ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(
CAMERA_WIDTH, CAMERA_HEIGHT), mCamera); // set screen
// orientation
// and camera to
// engine
// options
return options; // return those options
}
@Override
public void onCreateResources(
OnCreateResourcesCallback pOnCreateResourcesCallback)
throws Exception {
// TODO Auto-generated method stub
loadGfx(); // load graphics
pOnCreateResourcesCallback.onCreateResourcesFinished(); // add callback
}
private void loadGfx() {
// TODO Auto-generated method stub
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
playerTexture = new BitmapTextureAtlas(getTextureManager(), 88, 23);
playerTextureRegion = BitmapTextureAtlasTextureRegionFactory
.createFromAsset(playerTexture, getBaseContext(),
"mrsaispritesheet.png", 0, 0);
this.controlTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(new BuildableBitmapTextureAtlas(getTextureManager(), 32, 32), this.getAssets(), "basecontrol.png", false);
this.controlNubTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(new BuildableBitmapTextureAtlas(getTextureManager(), 32, 32), this.getAssets(), "controlnub.png", false);
}
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)
throws Exception {
// TODO Auto-generated method stub
final AnalogOnScreenControl control = new AnalogOnScreenControl(0,
CAMERA_HEIGHT - this.controlTextureRegion.getHeight(),
this.mCamera, this.controlTextureRegion,
this.controlNubTextureRegion, 200,
getVertexBufferObjectManager(),
new IAnalogOnScreenControlListener() {
@Override
public void onControlChange(
BaseOnScreenControl pBaseOnScreenControl,
float pValueX, float pValueY) {
// TODO Auto-generated method stub
}
@Override
public void onControlClick(
AnalogOnScreenControl pAnalogOnScreenControl) {
// TODO Auto-generated method stub
}
});
this.scene = new Scene();
this.scene.setBackground(new Background(0, 125, 58));
physicsWorld = new PhysicsWorld(new Vector2(0,
SensorManager.GRAVITY_MOON), false);
this.scene.registerUpdateHandler(physicsWorld);
createWalls();
this.scene.setChildScene(control);
pOnCreateSceneCallback.onCreateSceneFinished(this.scene);
}
private void createWalls() {
// TODO Auto-generated method stub
FixtureDef WALL_FIX = PhysicsFactory.createFixtureDef(0.0f, 0.0f, 0.0f);
Rectangle ground = new Rectangle(0, CAMERA_HEIGHT - 15, CAMERA_WIDTH,
15, this.mEngine.getVertexBufferObjectManager());
ground.setColor(new Color(15, 50, 0));
PhysicsFactory.createBoxBody(physicsWorld, ground, BodyType.StaticBody,
WALL_FIX);
this.scene.attachChild(ground);
}
@Override
public void onPopulateScene(Scene pScene,
OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {
// TODO Auto-generated method stub
Sprite sPlayer = new Sprite(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2,
playerTextureRegion,
this.mEngine.getVertexBufferObjectManager());
final FixtureDef PLAYER_FIX = PhysicsFactory.createFixtureDef(10.0f,
0.0f, 0.0f);
Body body = PhysicsFactory.createBoxBody(physicsWorld, sPlayer,
BodyType.DynamicBody, PLAYER_FIX);
this.scene.attachChild(sPlayer);
physicsWorld.registerPhysicsConnector(new PhysicsConnector(sPlayer,
body, true, false));
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
}
知道我做错了什么?帮助是apreciated:]
答案 0 :(得分:1)
创建它们之后,需要调用load函数来加载纹理。像这样:
playerTexture.load();
此行必须在创建它们之后