android - 从 Intent 调用 SimpleBaseGameActivity

标签 android android-intent andengine

我有疑问。我可以从 Intent 调用 AndEngine 的 SimpleBaseGameActivity 吗?

Intent intent = new Intent(getActivity(), GameActivity.class);  

startActivity(intent);

我已经在 project.properties 中将库添加到我的项目中

target=android-19
android.library.reference.1=..\\AndEngine-GLES2
android.library.reference.2=..\\appcompat_v7

当我尝试启动 Activity 时失败并出现此定位错误

11-28 12:13:18.896: E/AndroidRuntime(14662): FATAL EXCEPTION: main
11-28 12:13:18.896: E/AndroidRuntime(14662): Process: com.example.consejos, PID: 14662
11-28 12:13:18.896: E/AndroidRuntime(14662): java.lang.NullPointerException: Attempt to invoke virtual method 'void org.andengine.engine.Engine.start()' on a null object reference
11-28 12:13:18.896: E/AndroidRuntime(14662):    at org.andengine.ui.activity.BaseGameActivity.onResumeGame(BaseGameActivity.java:222)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at org.andengine.ui.activity.BaseGameActivity$4.run(BaseGameActivity.java:373)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at android.os.Handler.handleCallback(Handler.java:733)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at android.os.Handler.dispatchMessage(Handler.java:95)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at android.os.Looper.loop(Looper.java:136)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at android.app.ActivityThread.main(ActivityThread.java:5086)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at java.lang.reflect.Method.invoke(Native Method)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
11-28 12:13:18.896: E/AndroidRuntime(14662):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)

这是我的游戏 Activity 代码

package com.example.consejos;
import org.andengine.engine.camera.Camera;
import org.andengine.engine.options.EngineOptions;
import org.andengine.engine.options.ScreenOrientation;
import org.andengine.engine.options.WakeLockOptions;
import org.andengine.engine.options.resolutionpolicy.FillResolutionPolicy;
import org.andengine.entity.scene.Scene;
import org.andengine.entity.sprite.AnimatedSprite;
import org.andengine.entity.sprite.Sprite;
import org.andengine.opengl.texture.TextureOptions;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.opengl.texture.region.ITiledTextureRegion;
import org.andengine.ui.activity.SimpleBaseGameActivity;

public class MainActivityEx2 extends SimpleBaseGameActivity {

    private Camera mCamera;
    private static final int WIDTH = 1184;
    private static final int HEIGHT = 720;
    private BitmapTextureAtlas miAtlas;
    private ITextureRegion texturaChar;
    private ITiledTextureRegion texturaAnimada;
    private Sprite charSprite;
    private AnimatedSprite spriteAnimado;

    @Override
    public EngineOptions onCreateEngineOptions() {
        mCamera = new Camera(0,0,WIDTH,HEIGHT);
        EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), mCamera);
        engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);
        return engineOptions;
    }

    @Override
    protected void onCreateResources() {

        BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
        miAtlas = new BitmapTextureAtlas(getTextureManager(), 300, 300, TextureOptions.DEFAULT);
        texturaAnimada = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(miAtlas, this, "walk.png", 0, 0, 3, 4);

        miAtlas.load();     
    }

    @Override
    protected Scene onCreateScene() {
        Scene sceneEjemplo = new Scene();
        spriteAnimado = new AnimatedSprite(400, 400,texturaAnimada, getVertexBufferObjectManager());
        long[] duracionFrame = { 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200};
        spriteAnimado.animate(duracionFrame, 0, 10, true);
        sceneEjemplo.attachChild(spriteAnimado);

        return sceneEjemplo;
    }

}

这是我的来电 Activity

package com.example.consejos;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;

public class MyPassport extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.mypassport, container, false);

        final ImageView volvsol = (ImageView) view.findViewById(R.id.start);
        volvsol.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), MainActivityEx2.class);                   
                startActivity(intent);

            }


        });
        return view;
}
}

最佳答案

尝试在创建时安排引擎启动。

 @Override
    public Engine onCreateEngine(EngineOptions pEngineOptions) {
        Engine engine = newEngine(pEngineOptions);
        if(scheduleEngineStart){
            engine.start();
            scheduleEngineStart = !scheduleEngineStart;
        }
        return engine;
    }



 @Override
    public synchronized void onResumeGame() {
        if(mEngine != null) {
            super.onResumeGame();
            scheduleEngineStart = true;
        }
    }

关于android - 从 Intent 调用 SimpleBaseGameActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27187644/

相关文章:

java - 按下后退按钮时,上一个 fragment 显示空白屏幕(使用多个 fragment 事务)

android - 在 android 中以 12 或 24 小时格式显示 TimePicker

android - 广播接收器中 SEND 操作的 Intent 过滤器

android - 使用新的 AndEngine

android - 显示不同级别的不同场景。和引擎

安卓 : Scale and change color Of Draw-able progress bar simultaneously

android - 如何在一定次数后停止计时器

android - BlackBerry - 如何在 Android 中传递像 Intent.putExtra() 这样的数据

Android 6.0及以上版本卸载应用后不清除手机中的sqlite数据

android - 转换为 Dalvik 格式失败,错误为 1 :- No solution works