Включение игровых уровней в Cocos2d Android без перехода к следующей сцене

В игре Cocos2d для Android мне нужно добавить уровни, поэтому, когда игра завершится, она отобразит «Вы выиграли», после чего мне нужно добавить следующий уровень, но когда я пытаюсь добавить следующий код, он никогда не заменяет сцену. Может ли кто-нибудь помочь мне в этом. Заранее спасибо.

public void update(float dt)
{
    LinkedList<CCSprite> projectilesToDelete = new LinkedList<CCSprite>();

    for (CCSprite projectile : _projectiles)
    {
        CGRect projectileRect = CGRect.make(projectile.getPosition().x - (projectile.getContentSize().width / 2.0f),
                                            projectile.getPosition().y - (projectile.getContentSize().height / 2.0f),
                                            projectile.getContentSize().width,
                                            projectile.getContentSize().height);

        LinkedList<CCSprite> targetsToDelete = new LinkedList<CCSprite>();

        for (CCSprite target : _targets)
        {
            CGRect targetRect = CGRect.make(target.getPosition().x - (target.getContentSize().width),
                                            target.getPosition().y - (target.getContentSize().height),
                                            target.getContentSize().width,
                                            target.getContentSize().height);

            if (CGRect.intersects(projectileRect, targetRect))
                targetsToDelete.add(target);
        }

        for (CCSprite target : targetsToDelete)
        {
            _targets.remove(target);
            removeChild(target, true);
        }

        if (targetsToDelete.size() > 0)
            projectilesToDelete.add(projectile);
    }

    for (CCSprite projectile : projectilesToDelete)
    {
        _projectiles.remove(projectile);
        removeChild(projectile, true);

        if (++_projectilesDestroyed > 30)
        {
            _projectilesDestroyed = 0;
            CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("You Win!"));

        CCMenuItemFont item1 = CCMenuItemFont.item("Next level", this, "onNextlevel");
        item1.setColor(new ccColor3B(0,0,0));
        CCMenu menu = CCMenu.menu(item1);
        menu.alignItemsVertically();
        addChild(menu);
    }
    }
    }



      public void onNextlevel()
        {
        try {

            CCScene scene = CCScene.node();
            scene.addChild(new Level1(color1), 0);
            CCDirector.sharedDirector().replaceScene(scene);

        } catch (Exception e) {
            e.printStackTrace();
        }
       }

Ошибка логарифма:

W/System.err(2037): java.lang.NoSuchMethodException: onNextlevel [class java.lang.Object] W/System.err(2037): at java.lang.Class.getConstructorOrMethod(Class.java:460) W/System.err(2037): at org.cocos2d.menus.CCMenuItem.<init>(CCMenuItem.java:54) W/System.err(2037): at org.cocos2d.menus.CCMenuItemLabel.<init>(CCMenuItemLabel.java:43) W/System.err(2037): at org.cocos2d.menus.CCMenuItemFont.<init>(CCMenuItemFont.java:49) W/System.err(2037): at org.cocos2d.menus.CCMenuItemFont.item(CCMenuItemFont.java:44) W/System.err(2037): at com.tutorials.cocos2dsimplegame.GameLayer.update(GameLayer.java:253) W/System.err(2037): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(2037): at java.lang.reflect.Method.invoke(Method.java:513) W/System.err(2037): at org.cocos2d.actions.CCTimer.update(CCTimer.java:82) W/System.err(2037): at org.cocos2d.actions.CCScheduler.tick(CCScheduler.java:252) W/System.err(2037): at org.cocos2d.nodes.CCDirector.drawCCScene(CCDirector.java:692) W/System.err(2037): at org.cocos2d.nodes.CCDirector.onDrawFrame(CCDirector.java:663) W/System.err(2037): at org.cocos2d.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1171) W/System.err(2037): at org.cocos2d.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1080)


person Tycoon    schedule 05.06.2013    source источник


Ответы (1)


Это говорит вам, что у класса «этот» нет метода onNextLevel.

Также нет смысла добавлять меню в сцену, которую вы собираетесь заменить, потому что вы не сможете с ней взаимодействовать (не говоря уже о том, чтобы ее увидеть). Вы, наверное, хотите меню на новой сцене, верно?

person LearnCocos2D    schedule 05.06.2013
comment
только что заменил этот CCDirector.sharedDirector().replaceScene(newLayer.scene()); и он переходит к следующей сцене, но перед переходом к следующей сцене мне нужно отобразить как LEVEL1, когда игрок нажимает «ОК», тогда он должен перейти к следующей сцене, как я могу это сделать сейчас - person Tycoon; 05.06.2013
comment
добавить промежуточную сцену с меню - person LearnCocos2D; 05.06.2013