Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)

原创 2015年11月21日 14:31:02

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)


在Xcode中打开MainScene.h文件,在接口中添加2个方法:

-(void)winGame;
-(void)loseGame;

回到MainScene.m文件中,转换对应的实现代码:

-(void)endScene{
    [_cat runAction:[CCActionSequence actions:
                     [CCActionScaleBy actionWithDuration:0.5 scale:3.0],
                     [CCActionDelay actionWithDuration:1.0],
                     [CCActionScaleTo actionWithDuration:0.5 scale:0],
                     [CCActionCallFunc actionWithTarget:self selector:@selector(showRestartMenu)],
                     nil]];
    [_cat runAction:[CCActionRepeatForever actionWithAction:
                     [CCActionRotateBy actionWithDuration:0.5 angle:360]]];
}

-(void)winGame{
    _gameOver = YES;
    _won = YES;
    [self endScene];
}

-(void)loseGame{
    _gameOver = YES;
    _won = NO;
    [self endScene];
}

winGame和loseGame方法最终都调用了endScene方法,而在endScene方法中实现了老鼠旋转缩放的动画效果,在动画结束时又调用了一个内部方法showRestartMenu.我们先来看一下这个方法在原代码里是如何实现的:

//原代码中的方法实现
- (void)showRestartMenu {
    CGSize winSize = [CCDirector sharedDirector].winSize;

    NSString *message;
    if (_won) {
        message = [NSString stringWithFormat:@"You win![left %d bones]", _cat.numBones];
    } else {
        message = @"You lose!";
    }

    CCLabelBMFont *label;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        label = [CCLabelBMFont labelWithString:message fntFile:@"Arial-hd.fnt"];
    } else {
        label = [CCLabelBMFont labelWithString:message fntFile:@"Arial.fnt"];
    }
    label.scale = 0.1;
    label.position = ccp(winSize.width/2, winSize.height * 0.6);
    [self addChild:label];

    CCLabelBMFont *restartLabel;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        restartLabel = [CCLabelBMFont labelWithString:@"Restart" fntFile:@"Arial-hd.fnt"];    
    } else {
        restartLabel = [CCLabelBMFont labelWithString:@"Restart" fntFile:@"Arial.fnt"];    
    }

    CCMenuItemLabel *restartItem = [CCMenuItemLabel itemWithLabel:restartLabel target:self selector:@selector(restartTapped:)];
    restartItem.scale = 0.1;
    restartItem.position = ccp(winSize.width/2, winSize.height * 0.4);

    CCMenu *menu = [CCMenu menuWithItems:restartItem, nil];
    menu.position = CGPointZero;
    [self addChild:menu z:10];

    [restartItem runAction:[CCScaleTo actionWithDuration:0.5 scale:1.0]];
    [label runAction:[CCScaleTo actionWithDuration:0.5 scale:1.0]];
}

可以看到代码比较长,但功能很简单:就是根据游戏胜利条件打造一个显式界面.界面中有2个标签,第一个显示胜利或失败的消息,后一个当成一个按钮来用,如果用户点击它,则重新载入MainScene场景.

但是其中一些类在Cocos2Dv3.4中已经没有了,比如CCMenuItemLabel.如果用CCButton类代替的话,则正常情况下Cocos2Dv3.4中的按钮类CCButton里的标签是不可以设置为CCLabelBMFont类型的.

那么我们怎么达到原代码中的效果呢?答案是用SpriteBuilder强大和方便的Layer界面创建能力来搞定!我们将在下一篇中详述创建过程.see you ;)

版权声明:大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.谢谢! hopy ;) 举报

相关文章推荐

Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(五)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了暂时不影响原来的cat移动方法,我们在CatSprit...
  • mydo
  • mydo
  • 2015-11-21 11:13
  • 1047

Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 回到Xcode中,新建一个EndLayer类,继承于CCN...
  • mydo
  • mydo
  • 2015-11-21 14:54
  • 736

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 打开SpriteBuilder,在文件视图中新建一个文件夹...
  • mydo
  • mydo
  • 2015-11-21 14:44
  • 923

Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(四)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在打开MainScene.m文件,首先设置实例变量:@i...
  • mydo
  • mydo
  • 2015-11-21 11:06
  • 972

基于cocos2d tileMap的一个小游戏

上一篇文章中我们介绍了cocos2d tileMap的一些基本知识,这一节我们基于cocos2d做一个简单的游戏,下载地址:http://download.csdn.net/detail/lennon...

CocosViewController – 在Cocos2D v3+中使用Storyboard

最近在做cocos2d-x与原生iOS控件混编的Demo,查资料的时候发现了这篇文章。虽然这个是Cocos2d的教程,但是感觉在思路上可以参考。(话说cocos2d-x一开始是参照cocos2d弄出来...

cocos2d-html5- v2.0 等比缩放

最近比较忙,好久没看过ch5了。现在ch5已经正式发布,api和模板文件有挺大的变化。我相信,如果有基础的人适应新的变化是没有问题的,所以我没打算重写之前的关于ch5的博客。 看了新版本的hello...

cocos2d-js v3.1 bug记录

写在前面,本帖记录为主,吐槽为辅,如果新版已经修复,请忽略。。。 1、屏幕顶部或者右侧出现的小黑边(个位像素的宽度)(SHOW_ALL适配策略)cc.view.setDesignResolution...

cocos2d引擎V2.0

2.0 cocos2d简介 Cocos2d最初的版本是用python写的,之后被改成objectiveC,应用于iphone上,之后国内某人又根据该设计理念,将其改为 C++版本cocos2dX,该...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)