Mọi người giúp mình khắc phục lỗi với

Thảo luận trong 'Hỏi đáp lập trình game Android' bắt đầu bởi ATHBK, 16/3/13.

  1. ATHBK

    ATHBK New Member

    Lượt xem: 2,846
    Tình hình là mình mới tiếp xúc với andengine và đang tập code. Mình đã code thử bài MenuExample trên trang https://github.com/nicolasgramlich/...2/src/org/andengine/examples/MenuExample.java thì nó báo lỗi như thế này :
    Mong a e giúp đỡ chứ mò mấy ngày nay nản lắm rồi :(.
    Code:
    PHP:
    package com.example.menuandengnie;
     
    import org.anddev.andengine.engine.Engine;
    import org.anddev.andengine.engine.camera.Camera;
    import org.anddev.andengine.engine.options.EngineOptions;
    import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
    import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
    import org.anddev.andengine.entity.modifier.MoveModifier;
    import org.anddev.andengine.entity.scene.Scene;
    import org.anddev.andengine.entity.scene.background.ColorBackground;
    import org.anddev.andengine.entity.scene.menu.MenuScene;
    import org.anddev.andengine.entity.scene.menu.MenuScene.IOnMenuItemClickListener;
    import org.anddev.andengine.entity.scene.menu.item.IMenuItem;
    import org.anddev.andengine.entity.scene.menu.item.SpriteMenuItem;
    import org.anddev.andengine.entity.sprite.Sprite;
    import org.anddev.andengine.entity.util.FPSLogger;
    import org.anddev.andengine.opengl.texture.TextureOptions;
    import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
    import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
    import org.anddev.andengine.opengl.texture.region.TextureRegion;
    import org.anddev.andengine.ui.activity.BaseGameActivity;
     
    import android.opengl.GLES20;
    import android.view.KeyEvent;
     
    public class 
    MainActivity extends BaseGameActivity implements IOnMenuItemClickListener {
       
        private static final 
    int CAMERA_WIDTH 720;
        private static final 
    int CAMERA_HEIGHT 480;
       
        protected static final 
    int MENU_RESET 0;
        protected static final 
    int MENU_QUIT MENU_RESET +1;
       
       
        protected 
    Camera mCamrera;
        protected 
    Scene mMainScene;
       
        private 
    BitmapTextureAtlas mBitmapTextureAtlas;
        private 
    TextureRegion mFaceTextureRegion;
       
        protected 
    MenuScene mMenuScene;
       
        private 
    BitmapTextureAtlas mMenuTexture;
        protected 
    TextureRegion mMenuResetTextureRegion;
        protected 
    TextureRegion mMenuQuitTextureRegion;
       
       
        @
    Override
        
    public Engine onLoadEngine() {
            
    // TODO Auto-generated method stub
            
    this.mCamrera = new Camera(00CAMERA_WIDTHCAMERA_HEIGHT);
            return new 
    Engine(new EngineOptions(trueScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTHCAMERA_HEIGHT),this.mCamrera));
           
        }
     
        @
    Override
        
    public void onLoadResources() {
            
    // TODO Auto-generated method stub
            
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
            
    this.mBitmapTextureAtlas = new BitmapTextureAtlas64,64,TextureOptions.BILINEAR);
            
    this.mFaceTextureRegion BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlasthis"face_box_menu.png",00);
            
    mEngine.getTextureManager().loadTexture(mBitmapTextureAtlas);
           
            
    this.mMenuTexture = new BitmapTextureAtlas(256128TextureOptions.BILINEAR);
            
    this.mMenuQuitTextureRegion BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mMenuTexturethis"menu_reset.png",0,0);
            
    this.mMenuQuitTextureRegion BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mMenuTexturethis"menu_quit.png",0,50);
            
    mEngine.getTextureManager().loadTexture(mMenuTexture);
        }
     
        @
    Override
        
    public Scene onLoadScene() {
            
    // TODO Auto-generated method stub
            
    this.mEngine.registerUpdateHandler(new FPSLogger());
            
    this.createMenuScene();
           
            
    this.mMainScene = new Scene();
            
    this.mMainScene.setBackground(new ColorBackground(0.09804f0.6274f0.8784f));
            final 
    Sprite face = new Sprite(00this.mFaceTextureRegion);
            
    face.registerEntityModifier(new MoveModifier(300CAMERA_WIDTH-face.getWidth(), 0CAMERA_HEIGHT-face.getHeight()));
            
    this.mMainScene.attachChild(face);
            return 
    this.mMainScene;
           
           
           
        }
     
        @
    Override
        
    public void onLoadComplete() {
            
    // TODO Auto-generated method stub
           
        
    }
       
     
        @
    Override
        
    public boolean onKeyDown(int pKeyCodeKeyEvent pEvent) {
            
    // TODO Auto-generated method stub
            
    if(pKeyCode == KeyEvent.KEYCODE_MENU && pEvent.getAction() == KeyEvent.ACTION_DOWN){
                if(
    this.mMainScene.hasChildScene()){
                    
    this.mMenuScene.back();
                }else{
                    
    this.mMainScene.setChildScene(this.mMenuScenefalsetruetrue);
                }
                return 
    true;
            }else{
            return 
    super.onKeyDown(pKeyCodepEvent);
            }
        }
     
        @
    Override
        
    public boolean onMenuItemClicked(MenuScene pMenuSceneIMenuItem pMenuItem,
                
    float pMenuItemLocalXfloat pMenuItemLocalY) {
            
    // TODO Auto-generated method stub
            
    switch(pMenuItem.getID()){
            case 
    MENU_RESET :
                
    this.mMainScene.reset();
                
    this.mMainScene.clearChildScene();
                
    this.mMainScene.reset();
                return 
    true;
            case 
    MENU_QUIT :
                
    this.finish();
                return 
    true;
            }
            return 
    false;
        }
       
        protected 
    void createMenuScene(){
            
    this.mMenuScene = new MenuScene(this.mCamrera);
            final 
    SpriteMenuItem resetMenuItem = new SpriteMenuItem(MENU_RESETthis.mMenuResetTextureRegion);
            
    resetMenuItem.setBlendFunction(GLES20.GL_SRC_ALPHAGLES20.GL_ONE_MINUS_SRC_ALPHA);
            
    this.mMenuScene.addMenuItem(resetMenuItem);
           
            final 
    SpriteMenuItem quitMenuItem = new SpriteMenuItem(MENU_QUITthis.mMenuQuitTextureRegion);
            
    quitMenuItem.setBlendFunction(GLES20.GL_SRC_ALPHAGLES20.GL_ONE_MINUS_SRC_ALPHA);
            
    this.mMenuScene.addMenuItem(quitMenuItem);
           
            
    this.mMenuScene.buildAnimations();
            
    this.mMenuScene.setBackgroundEnabled(false);
            
    this.mMenuScene.setOnMenuItemClickListener(this);
           
        }
     
       
       
    }

    Các file đính kèm:

    • Erorr.png
      Erorr.png
      Kích thước:
      262 KB
      Đọc:
      2,719
  2. thanhlong90.it

    thanhlong90.it Admin Support Staff Member

    Chào bạn, hiện tại Long thấy lỗi bắn ra từ LogCat là do việc khởi tạo Sprite là sai, ngoài ra không biết còn nhiều lỗi khác không (thư viện, cài đặt, lỗi từ một số đối tượng khác...) Nếu bắt đầu lập trình với Andengine bạn nên tham khảo bài hướng dẫn cơ bản của anh Giỏi: http://android.vn/threads/2272/ hoặc của Long : http://android.vn/threads/23190/

    Còn nếu muốn L kiểm tra lỗi bạn vui lòng up souce code lên để L kiểm tra nhé!
    ATHBK thích bài này.
  3. ATHBK

    ATHBK New Member

    Chào a Long, trước đây em đã code theo các bài hướng dẫn cơ bản của anh Giỏi và của a rồi, và kết quả là đã chạy được, nên em mới tự thực hành theo các ví dụ của nicolasgramlich. Đây là source code : http://www.mediafire.com/?c5oefu9rnzx7788.

    Mong a giúp đỡ :)
  4. thanhlong90.it

    thanhlong90.it Admin Support Staff Member

    hẹn bạn Long sẽ xem code và sẽ trả lời bạn trong ngày tối ngày thứ 3 nhé bạn. Hiện giờ Long đang đi công tác không có Eclipse để bug lỗi dùm bạn được mong bạn thông cảm!
  5. ATHBK

    ATHBK New Member

    Cảm ơn a Long :)
  6. thanhlong90.it

    thanhlong90.it Admin Support Staff Member

    Chào em, anh đã xem lại source code rồi, hiện tại đối tượng "BitmapTextureAtlas" không còn được hỗ trợ trong thư viện nữa. Em hãy thữ thay đổi đối tượng này bằng đối tượng "Texture". Đây là code anh sửa lại em xem thử chạy ok ko nhé, chú ý sự khác nhau giữa code cũ và code mới nhé! (Chú ý lần sau em post bài vào mục hỏi đáp của lập trình game nhé.)
    PHP:
    package com.example.menuandengnie;
     
    import org.anddev.andengine.engine.Engine;
    import org.anddev.andengine.engine.camera.Camera;
    import org.anddev.andengine.engine.options.EngineOptions;
    import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
    import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
    import org.anddev.andengine.entity.modifier.MoveModifier;
    import org.anddev.andengine.entity.scene.Scene;
    import org.anddev.andengine.entity.scene.background.ColorBackground;
    import org.anddev.andengine.entity.scene.menu.MenuScene;
    import org.anddev.andengine.entity.scene.menu.MenuScene.IOnMenuItemClickListener;
    import org.anddev.andengine.entity.scene.menu.item.IMenuItem;
    import org.anddev.andengine.entity.scene.menu.item.SpriteMenuItem;
    import org.anddev.andengine.entity.sprite.Sprite;
    import org.anddev.andengine.entity.util.FPSLogger;
    import org.anddev.andengine.opengl.texture.Texture;
    import org.anddev.andengine.opengl.texture.TextureOptions;
    import org.anddev.andengine.opengl.texture.region.TextureRegion;
    import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;
    import org.anddev.andengine.ui.activity.BaseGameActivity;
     
    import android.opengl.GLES20;
    import android.view.KeyEvent;
     
    public class 
    MainActivity extends BaseGameActivity implements
            
    IOnMenuItemClickListener {
     
        private static final 
    int CAMERA_WIDTH 720;
        private static final 
    int CAMERA_HEIGHT 480;
     
        protected static final 
    int MENU_RESET 0;
        protected static final 
    int MENU_QUIT MENU_RESET 1;
     
        protected 
    Camera mCamrera;
        protected 
    Scene mMainScene;
     
        private 
    Texture mBitmapTextureAtlas;
        private 
    TextureRegion mFaceTextureRegion;
     
        protected 
    MenuScene mMenuScene;
     
        private 
    Texture mMenuTexture;
        protected 
    TextureRegion mMenuResetTextureRegion;
        protected 
    TextureRegion mMenuQuitTextureRegion;
     
        @
    Override
        
    public Engine onLoadEngine() {
            
    // TODO Auto-generated method stub
            
    this.mCamrera = new Camera(00CAMERA_WIDTHCAMERA_HEIGHT);
            return new 
    Engine(new EngineOptions(trueScreenOrientation.LANDSCAPE,
                    new 
    RatioResolutionPolicy(CAMERA_WIDTHCAMERA_HEIGHT),
                    
    this.mCamrera));
     
        }
     
        @
    Override
        
    public void onLoadResources() {
            
    // TODO Auto-generated method stub
            
    TextureRegionFactory.setAssetBasePath("gfx/");
            
    this.mBitmapTextureAtlas = new Texture(6464,
                    
    TextureOptions.BILINEAR);
            
    this.mFaceTextureRegion TextureRegionFactory.createFromAsset(this.mBitmapTextureAtlasthis,
                            
    "face_box_menu.png"00);
            
    mEngine.getTextureManager().loadTexture(mBitmapTextureAtlas);
     
            
    this.mMenuTexture = new Texture(256128TextureOptions.BILINEAR);
            
    this.mMenuQuitTextureRegion TextureRegionFactory .createFromAsset(this.mMenuTexturethis"menu_reset.png"00);
            
    this.mMenuQuitTextureRegion TextureRegionFactory.createFromAsset(this.mMenuTexturethis"menu_quit.png"050);
            
    mEngine.getTextureManager().loadTexture(mMenuTexture);
        }
     
        @
    Override
        
    public Scene onLoadScene() {
            
    // TODO Auto-generated method stub
            
    this.mEngine.registerUpdateHandler(new FPSLogger());
            
    this.createMenuScene();
     
            
    this.mMainScene = new Scene();
            
    this.mMainScene.setBackground(new ColorBackground(0.09804f0.6274f,
                    
    0.8784f));
            final 
    Sprite face = new Sprite(00this.mFaceTextureRegion);
            
    face.registerEntityModifier(new MoveModifier(300CAMERA_WIDTH
                    
    face.getWidth(), 0CAMERA_HEIGHT face.getHeight()));
            
    this.mMainScene.attachChild(face);
            return 
    this.mMainScene;
     
        }
     
        @
    Override
        
    public void onLoadComplete() {
            
    // TODO Auto-generated method stub
     
        
    }
     
        @
    Override
        
    public boolean onKeyDown(int pKeyCodeKeyEvent pEvent) {
            
    // TODO Auto-generated method stub
            
    if (pKeyCode == KeyEvent.KEYCODE_MENU
                    
    && pEvent.getAction() == KeyEvent.ACTION_DOWN) {
                if (
    this.mMainScene.hasChildScene()) {
                    
    this.mMenuScene.back();
                } else {
                    
    this.mMainScene.setChildScene(this.mMenuScenefalsetruetrue);
                }
                return 
    true;
            } else {
                return 
    super.onKeyDown(pKeyCodepEvent);
            }
        }
     
        @
    Override
        
    public boolean onMenuItemClicked(MenuScene pMenuSceneIMenuItem pMenuItem,
                
    float pMenuItemLocalXfloat pMenuItemLocalY) {
            
    // TODO Auto-generated method stub
            
    switch (pMenuItem.getID()) {
            case 
    MENU_RESET:
                
    this.mMainScene.reset();
                
    this.mMainScene.clearChildScene();
                
    this.mMainScene.reset();
                return 
    true;
            case 
    MENU_QUIT:
                
    this.finish();
                return 
    true;
            }
            return 
    false;
        }
     
        protected 
    void createMenuScene() {
            
    this.mMenuScene = new MenuScene(this.mCamrera);
            final 
    SpriteMenuItem resetMenuItem = new SpriteMenuItem(MENU_RESETthis.mMenuResetTextureRegion);
            
    resetMenuItem.setBlendFunction(GLES20.GL_SRC_ALPHAGLES20.GL_ONE_MINUS_SRC_ALPHA);
            
    this.mMenuScene.addMenuItem(resetMenuItem);
            final 
    SpriteMenuItem quitMenuItem = new SpriteMenuItem(MENU_QUITthis.mMenuQuitTextureRegion);
            
    quitMenuItem.setBlendFunction(GLES20.GL_SRC_ALPHAGLES20.GL_ONE_MINUS_SRC_ALPHA);
            
    this.mMenuScene.addMenuItem(quitMenuItem);
     
            
    this.mMenuScene.buildAnimations();
            
    this.mMenuScene.setBackgroundEnabled(false);
            
    this.mMenuScene.setOnMenuItemClickListener(this);
        }
    }
    ATHBK thích bài này.
  7. zzvanquyenzz

    zzvanquyenzz New Member

    thank mình đang cần hjhj.

Chia sẻ trang này