Cocos2d-x 3.2 大富翁游戲項目開發-第二十二部分 拾到珍珠
來源:程序員人生 發布時間:2015-01-26 09:13:49 閱讀次數:2931次
該部份同前面處理邏輯基本1樣,道路上隨機出現閃爍的珍珠,在撿到珍珠后,toast顯示撿到珍珠資金增加。
1、編寫Item_ball類,該類存儲了珍珠相干動畫
bool Item_ball::init()
{
addItemSpriteFrameCache();
SpriteFrame* spf;
spf = itemSpriteFrameCache->getSpriteFrameByName("ball_01.png");
Sprite::initWithSpriteFrame(spf);
setItemAnimate();
return true;
}
void Item_ball::addItemSpriteFrameCache()
{
itemSpriteFrameCache = SpriteFrameCache::getInstance();
itemSpriteFrameCache->addSpriteFramesWithFile("images/ball.plist","images/ball.png");
memset(name, 0, 20);
for (int i=1; i<=3; i++)
{
sprintf(name, "ball_%02d.png",i);
item_anim_vector.pushBack(itemSpriteFrameCache->getSpriteFrameByName(name));
}
}
void Item_ball::setItemAnimate()
{
if(!AnimationCache::getInstance()->getAnimation("ball_animation"))
{
AnimationCache::getInstance()->addAnimation(Animation::createWithSpriteFrames(item_anim_vector,0.4f),"ball_animation");
}
normal_anmi = Animate::create(AnimationCache::getInstance()->getAnimation("ball_animation"));
normal_anmi->retain();
}
2、GameBaseScene的initItemSprite方法添加了item_ball對象
void GameBaseScene::initItemSprite()
{
item_crab = (Item_crab*)Item::create(ITEM_CRAB);
addChild(item_crab);
item_crab->runAction(RepeatForever::create(item_crab->getNormal_anmi()));
item_crab->setVisible(false);
item_ball = (Item_ball*)Item::create(ITEM_BALL);
addChild(item_ball);
item_ball->runAction(RepeatForever::create(item_ball->getNormal_anmi()));
item_ball->setVisible(false);
.................
}
3、updateBlockWaySprites方法更新珍珠的位置
void GameBaseScene::updateBlockWaySprites(float dt)
{
................
int _rand2 = rand()%(wayLayerPass_vector.size());
Vec2 position2 = wayLayerPass_vector.at(_rand2);
item_ball->setVisible(true);
item_ball->setPosition(position2);
item_ball->setAnchorPoint(ccp(0,0));
}
4、
當停留位置是珍珠時,toast顯示信息,顯示終了后調用sendMSGDealAroundLand2方法,繼續處理上下左右相鄰地塊信息
void GameBaseScene::doBlockWayEvent(RicherPlayer* player)
{
.............
else if(player->getBoundingBox().intersectsRect(item_ball->getBoundingBox()))
{
item_ball->setPosition(ccp(⑵00,⑵00));
int money = 10000;
refreshMoneyLabel(player,money);
CocosToast::createToast(this,String::createWithFormat("%s %d",LanguageString::getInstance()->getLanguageString(PICK_BALL)->getCString(),money)->getCString(),TOAST_SHOW_TIME,player->getPosition(),(SEL_CallFun)&GameBaseScene::sendMSGDealAroundLand2);
}
...........
}
void GameBaseScene::sendMSGDealAroundLand2()
{
NotificationCenter::getInstance()->postNotification(MSG_AROUND_LAND,String::createWithFormat("%d",MSG_AROUND_LAND_TAG));
}

代碼比較簡單,后面隨彩票代碼1起發布
未完待續.................
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈