开发一个游戏,在画面上绘制文字,按钮,精灵这些是最基础的工作了.这一篇我们就来讲讲如何在cocos2d-x中绘制带文字的标签,按钮及精灵.
带文字的标签:
//绘制一段文字 void HelloWorld::drawText(const char *ps) { CCLabelTTF* label = CCLabelTTF::create(ps,"Arial",24); CCSize size = CCDirector::sharedDirector()->getWinSize(); label->setPosition(ccp(size.width/2,size.height-70)); this->addChild(label,10); }
这段代码我绘制了一个标签label,并从ps参数带入了一段字符串,字体设置为Arial,字号为24.这样一个标签就创建完成了.
随后我又获得了窗口的尺寸size,以备为label设置位置使用.
通过label对象的setPosition函数我将这个标签的x坐标设置到窗口一半的位置,y坐标设置到窗口高度-70的位置.这里需要注意的是标签的锚点是在标签的正中央.
另外需要注意的是ccp这个宏.setPostion函数的参数是CCPoint类型,ccp宏中可以带入x,y值自动将坐标值转换为CCPoint类型.
最后将label加入到HelloWorld的子结点.
在HelloWorld::init()函数中调用drawText函数
bool HelloWorld::init() { bool bRet = false; do { drawText("你好世界"); bRet = true; } while (0); return bRet; }
需要注意的是,如果我们带入了中文字符串需要把我们的cpp文件另存为utf-8格式的文件
选中HelloWorldScene.cpp文件,文件->HelloWorldScene.cpp另存为->点击保存按钮旁边的向下小键头->编码保存->编码选择Unicode(UTF-8无签名)-代码页65001.这样在游戏中就可以正确显示中文了.
精灵:
//绘制一个精灵 void HelloWorld::drawSprite(const char *pi) { CCSprite* pSprite = CCSprite::create(pi); CCSize size = CCDirector::sharedDirector()->getWinSize(); pSprite->setPosition(ccp(size.width/2,size.height/2)); pSprite->setScale(0.5); this->addChild(pSprite,11); }
首先我们创建了一个CCSprite*类型的对象,create函数中代入的是精灵所使用的图片资源的路径.
然后我们将精灵的位置设置到屏幕中央,将精灵的大小通过setScale缩小了一倍.
最后加入到HelloWorld场景中
函数的调用方式可参考带HelloWorld::drawText调用方式
按钮:
//绘制一个关闭按钮 void HelloWorld::drawCloseButton() { CCMenuItemImage *pMenuItem = CCMenuItemImage::create("CloseNormal.png", "CloseSelected.png",this,menu_selector(HelloWorld::menuCloseCallback)); pMenuItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20)); CCMenu *pMenu = CCMenu::create(pMenuItem,NULL); pMenu->setPosition(CCPointZero); this->addChild(pMenu,12); }
//关闭按钮的操作 void HelloWorld::menuCloseCallback(CCObject* pSender) { CCDirector::sharedDirector()->end(); }
绘制这个按钮时需要先创建一个CCMenuItemImage*类型的菜单项.需要注意的是,我们在这里设置了一个按钮点击的响应函数HelloWorld::menuCloseCallback().
创建完菜单项后,要把让它附加到一个CCMenu*类型的对象里.
然后我们指定Menu的位置,最后讲它加入到场景中.
函数的调用方式参考HelloWorld::drawText调用方法.
看看我们的成果吧.
这一篇我们就结束了,下次我会教大家如何切换到另外一个场景