(NO.00001)iOS游戏SpeedBoy Lite成形记(十九)

来源:互联网 发布:怎样申请淘宝直播间 编辑:程序博客网 时间:2024/06/01 10:42

最后就是要完成前面设定的第3件事:如果玩家赌对了则赢钱,反之输钱.

前面的框架搭的差不多了,所以这里实现起来也就不难了 ;)

首先我们怎么知道用户输入完毕,然后关闭窗口了?只有在这个点上GameScene才能做下一步操作,比如将实例变量_isBeted置为YES.

一个可能的方法是创建一个回调协议,在GameScene实现该协议.一旦菜单窗口关闭就调用协议中的方法.

因为这个例子中的菜单窗口不多,回调也不复杂.所以我们用另一种方法,就是给每个弹出窗口赋予一个唯一的名字,然后在GameScene的removePopup中做判断,从而执行对应的代码.

打开SpriteBuilder,给moneyLayer窗口指定一个名字moneyLayer:

这里写图片描述

回到GameScene修改removePopup方法如下:

-(void)removePopup{    if (_popupLayer) {        NSString *popupName = _popupLayer.name;        [_popupLayer removeFromParent];        _popupLayer = nil;        self.userInteractionEnabled = YES;        if ([popupName isEqualToString:@"moneyLayer"]) {            [self moneyLayerReturnCallback];        }else if([popupName isEqualToString:@"gameoverLayer"]){            [self gameoverLayerReturnCallback];        }    }}

后面else判断的是其他窗口,这里可以先略过.

然后实现moneyLayerReturnCallback方法:

-(void)moneyLayerReturnCallback{    //GameState *gameState = [GameState sharedInstance];    [self updateGambleState];    _isBeted = YES;}

里面怎么又有一个updateGambleState方法!?这就是前面用来实现显示每轮比赛压赌状态功能的啊.实现如下:

static NSString *GambleFormat = @"余额:%d 赌金:%d 选手:%d";-(void)updateGambleState{    GameState *gameState = [GameState sharedInstance];    NSString *msg = [NSString stringWithFormat:GambleFormat,gameState.totalMoney,gameState.money,_betPlayer];    [_interface updateGambleLabel:msg];}

这就是前面的图片最上方的内容的实现.

0 0