【cocos2d-x 初学者学习篇】实现字符串 ,图片 ,按钮,动画
2013-11-03 08:57
405 查看
没什么编程实战经验的我 ,学一个新东西遇到的困难太多了 ,而且是在版本问题和编译器的使用上...
感谢无脑码农
版本cocos2d-x 2.0.x vs2010
在字符串,图片,按钮方面 ,没有什么问题 , 在绘制动画的时候 ,很多方法并不是简单create()的,在下面代码中可以看到具体的方法
我们要添加任何东西 ,应该遵循:
创建 ->设置位置->加入目标地
cocos2d-x 多了一个验证指针有效性的宏 : CC_BREAK_IF
那么我们可以归纳出添加组件的四个步骤:
1, 得到对象指针,并初始化
2, 检测指针
3, 设置坐标点
4, 加入目标图层
完整代码:(整个HelloWorldScene.cpp) [ 我晕 ,为什么没有语法高亮 ? 求高人指导 ... ]
一些需要补充的细节:
1 ,如何将图片加入:
首先把图片放到项目的resource文件夹下面 (从计算机操作)
然后通过在vs的项目中的 resource文件夹 ,右键 ,添加已有项即可
2 ,关于png和jpg ?
png会保留图片的透明区域(让它看起来是透明的 ) ,如果图片没有透明区域 ,可通用
本人没怎么用过博客 ,所以有些凌乱 ...
感谢无脑码农
版本cocos2d-x 2.0.x vs2010
在字符串,图片,按钮方面 ,没有什么问题 , 在绘制动画的时候 ,很多方法并不是简单create()的,在下面代码中可以看到具体的方法
我们要添加任何东西 ,应该遵循:
创建 ->设置位置->加入目标地
cocos2d-x 多了一个验证指针有效性的宏 : CC_BREAK_IF
那么我们可以归纳出添加组件的四个步骤:
1, 得到对象指针,并初始化
2, 检测指针
3, 设置坐标点
4, 加入目标图层
#include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene() { CCScene * scene = NULL; //生成场景指针 do { // 'scene' is an autorelease object scene = CCScene::create(); CC_BREAK_IF(! scene); // 'layer' is an autorelease object HelloWorld *layer = HelloWorld::create(); //多态 CC_BREAK_IF(! layer); // add layer as a child to scene scene->addChild(layer); } while (0); // return the scene return scene; } // on "init" you need to initialize your instance bool HelloWorld::init() { bool bRet = false; do { /* ////////////////////////////////////////////////////////////////////////// // super init first ////////////////////////////////////////////////////////////////////////// CC_BREAK_IF(! CCLayer::init()); ////////////////////////////////////////////////////////////////////////// // add your codes below... ////////////////////////////////////////////////////////////////////////// // 1. Add a menu item with "X" image, which is clicked to quit the program. // Create a "close" menu item with close icon, it's an auto release object. CCMenuItemImage *pCloseItem = CCMenuItemImage::create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback)); CC_BREAK_IF(! pCloseItem); //每写一个新的指针 ,都需要这个宏来验证它是否正常 // Place the menu item bottom-right conner. pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20)); // Create a menu with the "close" menu item, it's an auto release object. CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); pMenu->setPosition(CCPointZero); CC_BREAK_IF(! pMenu); // Add the menu to HelloWorld layer as a child layer. this->addChild(pMenu, 1); // 2. Add a label shows "Hello World". // Create a label and initialize with string "Hello World". CCLabelTTF* pLabel = CCLabelTTF::create("First App", "Arial", 24); CC_BREAK_IF(! pLabel); // Get window size and place the label upper. CCSize size = CCDirector::sharedDirector()->getWinSize(); pLabel->setPosition(ccp(size.width / 2, size.height - 50)); // Add the label to HelloWorld layer as a child layer. this->addChild(pLabel, 1); // 3. Add add a splash screen, show the cocos2d splash image. CCSprite* pSprite = CCSprite::create("HelloWorld.png"); CC_BREAK_IF(! pSprite); // Place the sprite on the center of the screen pSprite->setPosition(ccp(size.width/2, size.height/2)); // Add the sprite to HelloWorld layer as a child layer. this->addChild(pSprite, 0); */ //首先是父类的方法 CC_BREAK_IF(!CCLayer::init()); //创建一个CCLabelTTF对象指针,用来绘制字符串,它是一个自动释放的对象 CCLabelTTF* pLabel = CCLabelTTF::create("MyGame","Arial",14) ; //检测 CC_BREAK_IF(!pLabel); //获得屏幕高度 CCSize size = CCDirector::sharedDirector()->getWinSize(); //设置坐标点 pLabel->setPosition(ccp(size.width/2,size.height/2)); //将pLabel添加到当前创建 this->addChild(pLabel,2); //添加图片 /* //创建一个CCSprite的指针 绘制图片 它是一个自动释放的对象 CCSprite* pSprite = CCSprite::create("Hello.jpg"); //检测 CC_BREAK_IF(!pSprite); //设置坐标点 pSprite->setPosition(ccp(size.width/2,size.height/2+50)); //添加到图层 this->addChild(pSprite,1); */ //创建文本按钮 CCLabelTTF* pBtn = CCLabelTTF::create("StartGame","Arial",50); //检测 CC_BREAK_IF(!pBtn) ; //创建menu CCMenuItemLabel* pItemLabel = CCMenuItemLabel::create(pBtn); //检测 CC_BREAK_IF(!pItemLabel); //设置位置 pItemLabel->setPosition(ccp(size.width/2,100)); /* //生成menu层 CCMenu* pMenu =CCMenu::create(pItemLabel,NULL); pMenu->setPosition(CCPointZero); this->addChild(pMenu,3); */ /* 通过CCMenuItemFont文字直接生成按钮 */ //使用CCMenuItemFont 创建一个文本按钮 CCMenuItemFont* pItemFont = CCMenuItemFont::create("Font Button" ,this,NULL); CC_BREAK_IF(! pItemFont); pItemFont->setPosition(size.width/2,70); /* //生成menu层 CCMenu* pMenu = CCMenu::create(pItemLabel,pItemFont,NULL); //设置位置 pMenu->setPosition(CCPointZero); //添加显示 this->addChild(pMenu,3); */ /*利用图片生成按钮*/ //添加初始化 CCMenuItemImage* pItemImage = CCMenuItemImage::create("CloseNormal.png","CloseSelected.png",this,NULL); //检测 CC_BREAK_IF(!pItemImage); //设置位置 pItemImage->setPosition(size.width-50,50); //生成menu层 CCMenu* pMenu = CCMenu::create(pItemLabel,pItemFont,pItemImage,NULL); //设置位置 pMenu->setPosition(CCPointZero); //添加显示 this->addChild(pMenu,4); //动画显示: //读取2d纹理 CCTexture2D *pTexture=CCTextureCache::sharedTextureCache()->addImage("girl.png"); //创建动画帧 CCSpriteFrame *frame0=CCSpriteFrame::frameWithTexture(pTexture,CCRectMake(32*0, 48*0, 32, 48)); CCSpriteFrame *frame1=CCSpriteFrame::frameWithTexture(pTexture,CCRectMake(32*1, 48*0, 32, 48)); CCSpriteFrame *frame2=CCSpriteFrame::frameWithTexture(pTexture,CCRectMake(32*2, 48*0, 32, 48)); CCSpriteFrame *frame3=CCSpriteFrame::frameWithTexture(pTexture,CCRectMake(32*3, 48*0, 32, 48)); //创建帧数组 CCArray* pArray=CCArray::arrayWithCapacity(4); pArray->addObject(frame0); pArray->addObject(frame1); pArray->addObject(frame2); pArray->addObject(frame3); //创建动画 CCAnimation* animation=CCAnimation::createWithSpriteFrames(pArray,0.5f); CC_BREAK_IF(!animation); //初始化并设置一个Sprite CCSprite* girlSprite=CCSprite::spriteWithTexture(pTexture); CC_BREAK_IF(!girlSprite); //设置坐标点 girlSprite->setPosition(ccp(size.width/2,size.height/2)); this->addChild(girlSprite,2); //使用animation生成animate CCAnimate* animate=CCAnimate::actionWithAnimation(animation); CC_BREAK_IF(!animate); girlSprite->runAction(CCRepeatForever::create(animate)); bRet = true; } while (0); return bRet; } void HelloWorld::menuCloseCallback(CCObject* pSender) { // "close" menu item clicked CCDirector::sharedDirector()->end(); }
完整代码:(整个HelloWorldScene.cpp) [ 我晕 ,为什么没有语法高亮 ? 求高人指导 ... ]
一些需要补充的细节:
1 ,如何将图片加入:
首先把图片放到项目的resource文件夹下面 (从计算机操作)
然后通过在vs的项目中的 resource文件夹 ,右键 ,添加已有项即可
2 ,关于png和jpg ?
png会保留图片的透明区域(让它看起来是透明的 ) ,如果图片没有透明区域 ,可通用
本人没怎么用过博客 ,所以有些凌乱 ...
相关文章推荐
- cocos2d-x 3.2 |如何实现图片显示和精灵动画 Sprite
- cocos2d-x学习笔记(二)序列帧动画实现的几种方法
- 2014-11-8Android学习------Android 实现图片的旋转--------动画Animation学习篇
- 初学者学习 python实现字符动画
- 01-实现图片按钮的缩放、动画效果(block的初步应用)
- JQuery移动动画实现点击按钮切换图片--JQuery基础
- cocos2d-x学习之通过plist实现动画
- js实现简单的动画(4个按钮控制图片上下左右移动)
- 学习COCOS2D-x 精灵动画 实现一个《热血传奇》开门效果
- TexturePacker打包图片并使用addImageAsync实现longding界面异步加载图片纹理---cocos2d-x学习之路[3]
- 点击按钮使按钮背景图片轮换,实现动画效果
- android学习——实现欢迎界面图片动画滑动切换
- cocos2d-x学习笔记—图片按钮
- 【iOS开发-9】UIImage和UIImageView属性介绍,实现图片动画,实现开始/停止按钮效果
- cocos2d中如何使用图片纹理图集的加载来实现一个动画的功能
- SDL入门学习之三.加载BMP图片,实现动画
- 零基础学习IOS开发(四)- cocos2d-x3.0 使用转场动画和按钮
- cocos2d-x学习笔记—图片按钮
- 【学习笔记】cocos2d-x 如何创建一个按钮(文本按钮、图片按钮)
- .net c# gif动画如何添加图片水印实现思路及代码学习