[cocos2d-x]HelloWorldDemo

简介:

实现一个demo,具备以下功能:

1.让几个字分别位于中间和四个角落。

2.中间的字体改变,并且带有闪烁功能。

3.单点触摸和多点触摸,并且能够实现滑动效果,滑动的话必须使用带有bool返回值的单点触摸设置为true。

4.下面两个按钮能够实现添加节点和移除节点的作用。

效果图:


实现代码:

HelloWorldScene.h:

#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__  #include "cocos2d.h" using namespace cocos2d; class HelloWorld : public cocos2d::CCLayer { public:     // Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)     virtual bool init();      // there's no 'id' in cpp, so we recommend to return the class instance pointer     static cocos2d::CCScene* scene();          // a selector callback     void menuCloseCallback(CCObject* pSender);      // preprocessor macro for "static create()" constructor ( node() deprecated )     CREATE_FUNC(HelloWorld);      void menuRemoveCallback(CCObject* pSender);      //启动触屏事件     virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);      //触摸注册事件     virtual void registerWithTouchDispatcher();      //单点触摸事件     virtual bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);      //移动事件     virtual void ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent); };  #endif // __HELLOWORLD_SCENE_H__

HelloWorldScene.cpp:

#include "HelloWorldScene.h" #include "SimpleAudioEngine.h"  using namespace cocos2d; using namespace CocosDenshion;  CCScene* HelloWorld::scene() {     // 'scene' is an autorelease object     CCScene *scene = CCScene::create();          // 'layer' is an autorelease object     HelloWorld *layer = HelloWorld::create();      // add layer as a child to scene     scene->addChild(layer);      // return the scene     return scene; }   bool HelloWorld::init() {      if ( !CCLayer::init() )     {         return false;     }     //设置当前允许触摸     this->setTouchEnabled(true);          CCMenuItemImage *pCloseItem = CCMenuItemImage::create(                                         "CloseNormal.png",                                         "CloseSelected.png",                                         this,     menu_selector(HelloWorld::menuCloseCallback) );     pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width / 2- 30, 20) );      CCMenuItemImage *pCloseItem1 = CCMenuItemImage::create(                                                           "CloseNormal.png",                                                           "CloseSelected.png",                                                           this,                                                           menu_selector(HelloWorld::menuRemoveCallback) );     pCloseItem1->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width / 2  + 30, 20) );               CCMenu* pMenu = CCMenu::create(pCloseItem1,pCloseItem, NULL);     pMenu->setPosition( CCPointZero );     this->addChild(pMenu, 1);          CCLabelTTF* pLabel = CCLabelTTF::create("江苏理工", "Thonburi", 34);     CCSize size = CCDirector::sharedDirector()->getWinSize();     //一开始设置为绿色     pLabel->setColor(ccGREEN);     pLabel->setPosition( ccp(size.width / 2, size.height / 2) );     this->addChild(pLabel,1);          //让节点闪烁的方法     CCAction *action = CCBlink::create(5, 20);     pLabel->runAction(action);     //变色的方法     CCAction *action1 = CCTintTo::create(5, 255, 0, 0);     pLabel->runAction(action1);          //左上角显示姓名     CCLabelTTF* pLabel1 = CCLabelTTF::create("丁小未", "Thonburi", 34);     CCSize size1 = CCDirector::sharedDirector()->getWinSize();     pLabel1->setAnchorPoint(ccp(0, 1));     pLabel1->setPosition( ccp(0, size1.height) );     this->addChild(pLabel1,1);          //右上角显示性别     CCLabelTTF* pLabel2 = CCLabelTTF::create("男", "Thonburi", 34);     CCSize size2 = CCDirector::sharedDirector()->getWinSize();     pLabel2->setAnchorPoint(ccp(1, 1));     pLabel2->setPosition( ccp(size2.width, size2.height) );     this->addChild(pLabel2,1);          //右下角显示年龄     CCLabelTTF* pLabel3 = CCLabelTTF::create("23", "Thonburi", 34);     CCSize size3 = CCDirector::sharedDirector()->getWinSize();     pLabel3->setAnchorPoint(ccp(1, 0));     pLabel3->setPosition( ccp(size3.width, 0) );     this->addChild(pLabel3,1);     return true;      }  void HelloWorld::menuCloseCallback(CCObject* pSender) {     //结束关闭事件 //    CCDirector::sharedDirector()->end(); // //#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) //    exit(0); //#endif     CCSize size = CCDirector::sharedDirector()->getWinSize();          CCLabelTTF *pLabel = CCLabelTTF::create("我是添加的", "Thonburi", 24);     pLabel->setPosition(ccp(size.width/2+30,size.height/2+30));     pLabel->setTag(10);     this->addChild(pLabel,1); }  void HelloWorld::menuRemoveCallback(CCObject *pSender) {     CCNode *pLabel = this->getChildByTag(10);     this->removeChild(pLabel); }  //多点触摸方法 void HelloWorld::ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent) {     //添加子视图     //随机数是CCRANDOM_0_1,是产生0-1之间的随机数 //    CCSize size = CCDirector::sharedDirector()->getWinSize(); //    CCLabelTTF *pLabel = CCLabelTTF::create("触屏添加", "Thonburi", 24); //    pLabel->setPosition(ccp(100, 100)); //    pLabel->setTag(10); //    this->addChild(pLabel,1);     CCLog("多点触摸Began"); }  bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) {     CCLog("单点触摸");     return true;//如果这个不返回true的话,则move方法没用 }  void HelloWorld::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) {     CCLog("单点moved"); }  //触摸注册事件 //如果没有这个,默认的是多点触摸,Targeted是单点,Standed是多点触摸 void HelloWorld::registerWithTouchDispatcher() {     CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true); }




















本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366396 ,如需转载请自行联系原作者
相关文章
|
6月前
cocos2dx GLProgram
cocos2dx GLProgram
18 0
|
缓存 知识图谱 异构计算
Cocos2dx实现多重纹理
Cocos2dx实现多重纹理
229 0
|
Android开发 C++ 开发者
《Cocos2D-x权威指南》——1.3 Cocos2D-x与Cocos2D-iPhone的比较
本节书摘来自华章计算机《Cocos2D-x权威指南》一书中的第1章,第1.3节,作者:满硕泉著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
992 0
|
Android开发 iOS开发 开发者
《Cocos2D-x权威指南》——1.1 什么是Cocos2D
本节书摘来自华章计算机《Cocos2D-x权威指南》一书中的第1章,第1.1节,作者:满硕泉著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1709 0
《Cocos2D-x权威指南》——第1章 认识Cocos2D-x
本节书摘来自华章计算机《Cocos2D-x权威指南》一书中的第1章,作者:满硕泉著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1064 0
|
定位技术 C++ 开发者
《Cocos2D权威指南》——1.1 什么是Cocos2D
本节书摘来自华章计算机《Cocos2D权威指南》一书中的第1章,第1.1节,作者:王寒,屈光辉,周雪彬著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1347 0
|
JavaScript Android开发 C++
《Cocos2D-x权威指南》——1.2 什么是Cocos2D-x
本节书摘来自华章计算机《Cocos2D-x权威指南》一书中的第1章,第1.2节,作者:满硕泉著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1282 0