- #ifndef__HELLOWORLD_SCENE_H__
- #define__HELLOWORLD_SCENE_H__
-
- #include"cocos2d.h"
- usingnamespacecocos2d;
-
- classHelloWorld:publiccocos2d::CCLayerColor
- {
- public:
-
- virtualboolinit();
-
- staticcocos2d::CCScene*scene();
- //aselectorcallback
- voidmenuCloseCallback(CCObject*pSender);
- //preprocessormacrofor"staticcreate()"constructor(node()deprecated)
- CREATE_FUNC(HelloWorld);
- voidaddTarget();
- voidspriteMoveFinished(CCNode*sender);
- voidgameLogic(cocos2d::CCTimedt);
- voidccTouchesEnded(CCSet*touches,CCEvent*event);
- CCArray*aarayTarget;
- CCArray*arrayProjectile;
- voidupdate(CCTimedt);
- };
- #endif//__HELLOWORLD_SCENE_H__
HelloWorldScence.cpp
[objc]
view plain
copy
print
?
#include"HelloWorldScene.h"
- #include"SimpleAudioEngine.h"
- namespacecocos2d;
- namespaceCocosDenshion;
- CCScene*HelloWorld::scene()
- //'scene'isanautoreleaSEObject
- CCScene*scene=CCScene::create();
- //'layer'isanautoreleaSEObject
- HelloWorld*layer=HelloWorld::create();
- //addlayerasachildtoscene
- scene->addChild(layer);
- //returnthescene
- returnscene;
- }
- //on"init"youneedtoinitializeyourinstance
- boolHelloWorld::init()
- //////////////////////////////
- //1.superinitfirst
- if(CCLayerColor::initWithColor(ccc4(255,255,255)))
- CCSizewinSize=CCDirector::sharedDirector()->getWinSize();
- arrayProjectile=CCArray::create();
- aarayTarget=CCArray::create();
- floatsprite_scale=2.0;
- CCSprite*Player=CCSprite::create("Player.png");
- Player->setScale(sprite_scale);
- Player->setPosition(ccp(Player->getContentSize().width*sprite_scale/2.0,winSize.height/2.0));
- this->addChild(Player);
- aarayTarget->retain();
- arrayProjectile->retain();
- this->schedule(schedule_selector(HelloWorld::gameLogic),1.0);
- this->schedule(schedule_selector(HelloWorld::update));
- this->setTouchEnabled(true);
- returntrue;
- }
- else{
- false;
- voidHelloWorld::gameLogic(cocos2d::CCTimedt){
- this->addTarget();
- HelloWorld::addTarget(){
- CCSizewinSize=CCDirector::sharedDirector()->getWinSize();
- CCSprite*target=CCSprite::create("Target.png");
- //随机位置
- intminY=target->getContentSize().height/2.0;
- intmaxY=winSize.height-target->getContentSize().height/2.0;
- intrangeY=maxY-minY;
- intactualY=rand()%rangeY+minY;
- target->setPosition(ccp(winSize.width-target->getContentSize().width/2.0,actualY));
- target->setTag(1);
- this->addChild(target);
- aarayTarget->addObject(target);
- //随机速度
- floatminDuration=2.0;
- floatmaxDuration=4.0;
- intrangeDuration=maxDuration-minDuration;
- floatactualDuration=rand()%rangeDuration+minDuration;
- CCFiniteTimeAction*actionMove=CCMoveTo::create(actualDuration,ccp(0-target->getContentSize().width/2.0,actualY));
- //增加一个回调函数,回收移动到屏幕外的精灵
- CCFiniteTimeAction*actionMoveDone=CCCallFuncN::create(this,callfuncN_selector(HelloWorld::spriteMoveFinished));
- target->runAction(CCSequence::create(actionMove,actionMoveDone,NULL));
- HelloWorld::spriteMoveFinished(cocos2d::CCNode*sender){
- CCSprite*sprite=(CCSprite*)sender;
- //this->removeChild(sprite,true);
- if(sprite->getTag()==1){
- aarayTarget->removeObject(sprite);
- }elseif(sprite->getTag()==2){
- arrayProjectile->removeObject(sprite);
- //发射飞镖
- HelloWorld::ccTouchesEnded(cocos2d::cocos2d::CCEvent*event){
- CCTouch*touch=(CCTouch*)touches->anyObject();
- CCPointlocation=touch->getLocationInView();
- location=this->convertTouchToNodeSpace(touch);
- CCSprite*projectile=CCSprite::create("Projectile.png");
- projectile->setPosition(ccp(20,winSize.height/2));
- floatoffX=location.x-projectile->getPositionX();
- floatoffY=location.y-projectile->getPositionY();
- if(offX<=0){
- return;
- projectile->setTag(2);
- this->addChild(projectile);
- arrayProjectile->addObject(projectile);
- floatangle=offY/offX;
- floatrealX=winSize.width+projectile->getContentSize().width/2;
- floatrealY=realX*angle+projectile->getPositionY();
- CCPointfinalPosition=ccp(realX,realY);
- //获取飞镖飞行时间
- floatlength=sqrtf(realX*realX+realY*realY);
- floatvelocity=480;
- floatrealMoveDuration=length/velocity;
- projectile->runAction(CCSequence::create(CCMoveTo::create(realMoveDuration,finalPosition),CCCallFuncN::create(this,callfuncN_selector(HelloWorld::spriteMoveFinished)),153); background-color:inherit; font-weight:bold">NULL));
- //碰撞检测,消除飞镖和敌人
- HelloWorld::update(cocos2d::CCTimedt){
- for(inti=0;i<aarayTarget->count();i++){
- CCSprite*target=(CCSprite*)aarayTarget->objectAtIndex(i);
- intj=0;j<arrayProjectile->count();j++){
- CCSprite*projectile=(CCSprite*)arrayProjectile->objectAtIndex(j);
- if(target->boundingBox().intersectsRect(projectile->boundingBox())){
- aarayTarget->removeObjectAtIndex(i);
- arrayProjectile->removeObjectAtIndex(j);
- this->removeChild(target);
- this->removeChild(projectile);
- break;
- HelloWorld::menuCloseCallback(CCObject*pSender)
- {
- CCDirector::sharedDirector()->end();
- #if(CC_TARGET_PLATFORM==CC_PLATFORM_IOS)
- exit(0);
- #endif
- }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|