android - 我的andengine项目黑屏

标签 android andengine

在 AndEngine 中创建我的第一个应用程序时,我只得到一个黑屏,而不是得到背景图像和播放按钮。 这里的代码 主要 Activity

public class MainActivity extends BaseGameActivity {

private BoundCamera camera;
private float WIDTH = 800;
private float HEIGHT = 480;

@Override
public Engine onCreateEngine(EngineOptions engineOptions){
    return new LimitedFPSEngine(engineOptions,60);
}

@Override
public EngineOptions onCreateEngineOptions() {

    camera = new BoundCamera(0,0,WIDTH,HEIGHT);
    EngineOptions engineOptions = new
            EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(),camera);
    engineOptions.getAudioOptions().setNeedsMusic(true).setNeedsSound(true);
    return engineOptions;
}

@Override
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws IOException {

}

@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws IOException {

}

@Override
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws IOException {

}
}

BaseScene.java

public abstract class BaseScene extends Scene {

protected Engine engine;
protected Activity activity;
protected ResourceManager resourceManager;
protected VertexBufferObjectManager vbom;
protected Camera camera;

public BaseScene(){
    this.resourceManager = ResourceManager.getInstance();

    this.activity = resourceManager.activity;
    this.engine = resourceManager.engine;
    this.vbom = resourceManager.vbom;
    this.camera = resourceManager.camera;

    createScene();
}

public abstract void createScene();
public abstract void onBackKeyPressed();
public abstract SceneManager.SceneType getSceneType();
public abstract void disposeScene();
}

场景管理器.java

public class SceneManager {

private BaseScene mainMenu;
private BaseScene gameScene;

private BaseScene currentScene;

private static final SceneManager INSTANCE = new SceneManager();

private SceneType currentSceneType = SceneType.SCENE_MENU;

private Engine engine = ResourceManager.getInstance().engine;

public enum SceneType
{
    SCENE_MENU,
    SCENE_GAME
}

public void setScene(BaseScene scene){

    engine.setScene(scene);

    currentScene = scene;

    currentSceneType = scene.getSceneType();

}

public static SceneManager getInstance(){
    return INSTANCE;
}

public SceneType getSceneType(){
    return currentSceneType;
}
}

我还有 2 个类 MainMenu 和 ResourceManager 我哪里出错了?

最佳答案

您至少应该在游戏 Activity 中从父类(super class)中实现 4 个回调方法。

  • onCreateEngineOptions:您应该在其中指定游戏引擎的主要特征。 (例如相机、渲染选项、声音选项)

  • onCreateResources:您应该在其中加载游戏启动后需要立即使用的纹理和声音。

  • onCreateScene :您应在其中实例化游戏的第一个场景。每当用户启动您的游戏时,引擎都会显示该游戏。

  • onPopulateScene :实现此回调是可选的,取决于您的设计架构。但是,您应该调用给定的回调让引擎继续。

在这些方法中,您获得了一个pOnCreateSceneCallback 对象。完成该方法后,应调用该对象。您必须这样做,否则您的引擎会卡住,无法加载您的游戏。

开始使用 AndEngine

关于android - 我的andengine项目黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33933797/

相关文章:

java - Android 模拟器没有响应程序

android - addJavascriptInterface() 是否依赖于 getClass()?

android - 加载 map 后出现 AndEngine 错误 : Invalid Index (onUpdate) FATAL EXCEPTION: UpdateThread

java - NoClassDefFoundError : FixedStepPhysicsWorld

java - 安卓 ArrayList IndexOutOfBoundsException

android - Crosswalk 无法访问 localStorage

android - 了解长轮询 : client (android) and server (asp net)

android - 如何找到图像的顶点(山)

android - 无法在 Android 中登录 QuickBlox

android - 需要一个非常基本的迷宫算法的建议