0

完整的代码在这里我的问题是:

  1. 我运行它按预期运行的代码
  2. 我按下后退按钮
  3. 我从手机重新打开应用程序
  4. 屏幕变黑

我已经在 Android v2.3 (Gingerbread) 操作系统上测试了这段代码

这个问题是因为cocos 2d库吗?请提前告诉我谢谢...

    import org.cocos2d.layers.CCColorLayer;
    import org.cocos2d.layers.CCLayer;
    import org.cocos2d.layers.CCScene;
    import org.cocos2d.nodes.CCDirector;
    import org.cocos2d.nodes.CCSprite;
    import org.cocos2d.opengl.CCGLSurfaceView;
    import org.cocos2d.types.CGPoint;
    import org.cocos2d.types.CGSize;
    import org.cocos2d.types.ccColor4B;

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Window;
    import android.view.WindowManager;

    public class GameActivity extends Activity {
        private CCGLSurfaceView mGLSurfaceView;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

    //        Log.d("hii", "m here on create");

            // set the window status, no tile, full screen and don't sleep
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
                    WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

            mGLSurfaceView = new CCGLSurfaceView(this);

            setContentView(mGLSurfaceView);

            // attach the OpenGL view to a window
            CCDirector.sharedDirector().attachInView(mGLSurfaceView);

            // no effect here because device orientation is controlled by manifest
            CCDirector.sharedDirector().setDeviceOrientation(CCDirector.kCCDeviceOrientationPortrait);

            // show FPS
            // set false to disable FPS display, but don't delete fps_images.png!!
            CCDirector.sharedDirector().setDisplayFPS(false);

            // frames per second
            CCDirector.sharedDirector().setAnimationInterval(1.0f / 60);
            CCScene scene = TemplateLayer.scene();

            // Make the Scene active
            CCDirector.sharedDirector().runWithScene(scene);
        }

        @Override
        public void onStart() {
            super.onStart();     
            Log.d("hii", "m here on start");
        }

        @Override
        public void onPause() {
            super.onPause();
            Log.d("hii", "m here on pause");
            CCDirector.sharedDirector().pause();
        }

        @Override
        public void onResume() {
            super.onResume();
            Log.d("hii", "m here on resumae");
            CCDirector.sharedDirector().resume();
        }

        @Override
        public void onDestroy() {
            super.onDestroy();
            Log.d("hii", "m here on destroy");
            CCDirector.sharedDirector().end();
        }

        public static class TemplateLayer extends CCColorLayer
        {


            CGSize winSize = CCDirector.sharedDirector().displaySize();

            //killing sprite
            CCSprite killerchild,boat,pirates;

            public static CCScene scene() 
            {

                CCScene scene = CCScene.node();
                CCLayer layer = new TemplateLayer(ccColor4B.ccc4(0, 225, 145, 146));

                scene.addChild(layer);

                return scene;
            }


               @Override
                public void onEnter() {

                    // then iterate over all the children
                    super.onEnter();

                }

               @Override
                public void onExit() {

                    super.onExit();

                }



            protected TemplateLayer(ccColor4B color) 
            {

                super(color);

                this.setIsTouchEnabled(true);


                killerchild = CCSprite.sprite("logo.png");
                killerchild.setAnchorPoint(CGPoint.ccp(0, 0));

                killerchild.setPosition(CGPoint.ccp(winSize.width/2-killerchild.getContentSize().width/2, winSize.height-killerchild.getContentSize().height));
                addChild(killerchild);

                boat = CCSprite.sprite("boat.png");
                boat.setAnchorPoint(CGPoint.ccp(0, 0));

                boat.setPosition(CGPoint.ccp(winSize.width/2-boat.getContentSize().width/2,-boat.getContentSize().height/4));
                addChild(boat);


                pirates = CCSprite.sprite("Pirates.png");
                pirates.setAnchorPoint(CGPoint.ccp(0, 0));

                pirates.setPosition(CGPoint.ccp(winSize.width/2-pirates.getContentSize().width/2,winSize.height/2-pirates.getContentSize().height/2));
                addChild(pirates,-1);

            }

        }

    }
4

2 回答 2

0

我认为这是一个问题,因为您用于 cocos 2D 的 jar 文件。我用过我的罐子,但没有遇到这个问题。请从以下链接下载并检查。

https://www.wetransfer.com/downloads/8d55297ac0f605408682fea530e0419120130920102338/e48fbd145e26dc5968402f3a8915678620130920102338/8f429f

请检查此库,如果问题仍然存在,请告诉我。

于 2013-09-20T10:48:14.080 回答
0

在 TemplateLayer 类中扩展 CCColorLayer:

public static CCScene scene() {
    CCScene scene = CCScene.node();
    CCLayer layer = new TemplateLayer(ccColor4B.ccc4(0, 225, 145, 146));
    scene.addChild(layer);
    return scene;
}

并将 TemplateLayer() 构造函数更改为:

TemplateLayer(ccColor4B color){
super(color);
}

运行项目

于 2013-07-18T11:54:01.667 回答