[cocos2d-x]HelloWorldDemo(Mac&Win7两个版本)
来源:互联网 发布:excel03查找重复数据 编辑:程序博客网 时间:2024/06/06 03:42
实现一个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);}
搞了一段时间的unity3d,最近又重温一下cocos2dx,由于没有mac机,就只能用windows来配置开发环境,依旧从HelloWorld开始!
配置环境:我用的是VS2012,python2.7.3貌似,安装完毕后设置一下环境变量,添加上C:\Python27,然后cocos2dx2.4.2版本,然后cmd创建新工程。
然后在project文件夹下就能看到新建的工程了!
效果图:
上面红色的字我已经标注的很清楚,新手第一次碰到的时候都会想,我要输入中文,但显示出来确实乱码,这就是编码问题,只要转码就OK了!
代码:
CCLabelTTF *labelWelcome0=CCLabelTTF::create("Hello","微软雅黑",48);CCLabelTTF *labelWelcome1=CCLabelTTF::create("World","宋体",48);CCLabelTTF *labelWelcome2=CCLabelTTF::create("Welcome","Consolas",48);CCLabelTTF *labelWelcome3=CCLabelTTF::create("DingXiaowei","Bitstream Vera Sans Mono",48);CCSize size = CCDirector::sharedDirector()->getWinSize();float width = size.width;float height = size.height;CCSize s0 = labelWelcome0->getContentSize();CCSize s1 = labelWelcome1->getContentSize();CCSize s2 = labelWelcome2->getContentSize();CCSize s3 = labelWelcome3->getContentSize();labelWelcome0->setPosition(CCPointMake(s0.width/2,size.height-s0.height/2));labelWelcome1->setPosition(ccp(size.width-s1.width/2,size.height-s1.height/2));labelWelcome2->setPosition(CCPoint(s2.width/2,s2.height/2));labelWelcome3->setPosition(ccp(size.width-s3.width/2,s3.height/2));addChild(labelWelcome0,1);addChild(labelWelcome1,1);addChild(labelWelcome2,1);addChild(labelWelcome3,1);CCLabelTTF * namelabel = CCLabelTTF::create(G2U("Cocos2d-x,我爱你!"),"微软雅黑",48);namelabel->setPosition(ccp(size.width/2,size.height/2));addChild(namelabel,1);
转码的方法:
设置字体颜色:
//转码成utf-8,windows默认gb2312char* HelloWorld::G2U(const char* gb2312) { int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0); wchar_t* wstr = new wchar_t[len+1]; memset(wstr, 0, len+1); MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len); len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL); char* str = new char[len+1]; memset(str, 0, len+1); WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL); if(wstr) delete[] wstr; return str; }
设置字体颜色:
//设置颜色,其实是一个rgb三原色,0-255的三种组合srand((unsigned) time(NULL));ccColor3B c0,c1,c2,c3,c4;c0.r=rand()%256;c0.g=rand()%256;c0.b=rand()%256;c1.r=rand()%256;c1.g=rand()%256;c1.b=rand()%256;c2.r=rand()%256;c2.g=rand()%256;c2.b=rand()%256;c3.r=rand()%256;c3.g=rand()%256;c3.b=rand()%256;c4.r=rand()%256;c4.g=rand()%256;c4.b=rand()%256;labelWelcome0->setColor(c0);labelWelcome1->setColor(c1);labelWelcome2->setColor(c2);labelWelcome3->setColor(c3);
- [cocos2d-x]HelloWorldDemo(Mac&Win7两个版本)
- cocos2d-x window 版本 转 mac 版本 注意
- Cocos2d-x v2.2.2版本+Win7+VS2010环境搭建
- cocos2d-x-3.2版本win7环境中的搭建
- Cocos2d-x v2.2.2版本+Win7+VS2010环境搭建
- Cocos2d-x 3.0版本Win7-VS2012开发环境搭建
- Cocos2d-x v2.2.2版本+Win7+VS2010环境搭建
- 【COCOS2D-X学习】 Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本
- cocos2d-x 3.5版本mac平台下创建项目
- 在 mac 上搭建 cocos2d-x 3.1 版本的环境
- win7搭建cocos2d-x
- Cocos2d-x win7 + vs2010
- Mac卸载cocos2d-x
- cocos2d-x 2.x版本之windows win32 win 64 win7 winxp环境搭配 超级详细
- Cocos2d-x版本升级
- Cocos2d-x版本升级
- cocos2d-x学习日志(1) -Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境
- cocos2d-x 3.0rc0 win7
- Multiple of 17
- 如何理解c和c ++的复杂类型声明
- 修改文件权限
- 头文件string与string.h的区别
- EditPlus 搭建 Lua 开发环境
- [cocos2d-x]HelloWorldDemo(Mac&Win7两个版本)
- C++拷贝构造函数详解
- Android DES加密的CBC和ECB加密解密模式
- 玩转Eclipse — 自动代码规范化
- 记录今天学到的东西
- cocos2d-html5教程之重要概念及Test例子结构
- css学习笔记之选择器
- c语言中可变参数函数的设计(转)
- 算法总结系列之六: 桶排序(Bucket Sort)