关闭

[置顶] 写一下我对植物大战僵尸设计模式的理解

标签: cocos2d-x
1943人阅读 评论(2) 收藏 举报

今晚,弄到现在,几番想砸键盘以后,却让我做出来了;是什么呢?我看看能不能解释清楚吧;

我们不是建立了一个主游戏层吗?它有多个子层这些之层分散在主游戏层得周围;可以看作周围多个点 围绕着中间一个点;

现在的问题是怎么在这些子层之间建立联系,比如我接下来要讲的  每个葵花植物成熟后金币要加上相应的值,对吧,但是葵花精灵和金币不在同一个层 ,你在葵花所在那个层里面怎么实现金币的运算;

浪费了很长时间,老是错,错的让人心烦;不过在22:30我找到了解决方案:

给大家看下部分代码:完整的代码我明天会写;今晚恐怕写不了了。。好困!

void SunCellLayer::initSunCell(float dt)
{
       this->_sunCellSprite = SunCellSprite::create();
	   this->_sunBatchNode->addChild(this->_sunCellSprite);
	   CCSize winsize = CCDirector::sharedDirector()->getWinSize();
	   this->_sunCellSprite->setPosition(ccp(3*winsize.width/4 * rand()/RAND_MAX + 1*winsize.width/5,winsize.height+this->_sunCellSprite->getContentSize().height));
	   this->SunCellMoveWay();

}

void SunCellLayer::SunCellMoveWay()
{
	CCSize winSize = CCDirector::sharedDirector()->getWinSize();
	CCFiniteTimeAction* sunCellMove1 = CCMoveTo::create(4.0f,ccp(this->_sunCellSprite->getPosition().x,1* winSize.height/4 *rand()/RAND_MAX + 2*winSize.height/5));
	CCFiniteTimeAction* sunCellMove2 = CCMoveTo::create(0.5f,ccp(2*winSize.width/7, 8*winSize.height/9));
	this->_sunCellSprite->runAction(CCSequence::create(sunCellMove1,sunCellMove2,CCCallFuncN::create(this,callfuncN_selector(SunCellLayer::removeSunCell)),NULL));
}

void SunCellLayer::removeSunCell(CCNode* pSend)
{
	CCSprite* sprite = (CCSprite*) pSend;
	this->_sunBatchNode->removeChild(sprite,true);
	((GameLayer*)this->getParent())->_dollarDisplayLayer->_dollar = ((GameLayer*)this->getParent())->_dollarDisplayLayer->_dollar +25;//就是这里
	
}
先这样吧明天在解释

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:135216次
    • 积分:2304
    • 等级:
    • 排名:第16999名
    • 原创:78篇
    • 转载:1篇
    • 译文:1篇
    • 评论:162条
    最新评论