cocos2dx-常用控件的使用(二)

前端之家收集整理的这篇文章主要介绍了cocos2dx-常用控件的使用(二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

cocos2dx其实也和普通软件开发一样,不外乎一些控件的组合,再配合一些逻辑的处理,就成了我们熟悉的游戏了。

今天就让我们一起来熟悉一下常用的控件

1.在游戏开发中我们把每一个界面称作一个场景(Scene),每一个场景是由很多层(Layer)组成的,每一个层中又包含了很多精灵(Sprite),当然我们别忘了我们最大的指挥官导演(Director)。

接下来我们看一看他们是怎么运作的。

首先在AppDeletegate.cpp中我们看到如下代码

  1. bool AppDelegate::applicationDidFinishLaunching() {
  2. // initialize director
  3. auto director = Director::getInstance();
  4. auto glview = director->getOpenGLView();
  5. if(!glview) {
  6. glview = GLViewImpl::create("My Game");
  7. director->setOpenGLView(glview);
  8. }
  9.  
  10. // turn on display FPS
  11. director->setDisplayStats(true);
  12.  
  13. // set FPS. the default value is 1.0/60 if you don't call this
  14. director->setAnimationInterval(1.0 / 60);
  15.  
  16. // create a scene. it's an autorelease object
  17. auto scene = HelloWorld::createScene();
  18.  
  19. // run
  20. director->runWithScene(scene);
  21.  
  22. return true;
  23. }
关键在于
  1. director->runWithScene(scene);
把场景运行起来

然后进入场景

  1. Scene* HelloWorld::createScene()
  2. {
  3. // 'scene' is an autorelease object
  4. auto scene = Scene::create();
  5. // 'layer' is an autorelease object
  6. auto layer = HelloWorld::create();
  7.  
  8. // add layer as a child to scene
  9. scene->addChild(layer);
  10.  
  11. // return the scene
  12. return scene;
  13. }
创建一个场景,再创建一个层,并且把这个层加入到场景中

后执行HelloWorld::init()方法进行一些初始化

2.常用控件

·消息对话框MessageBox

  1. MessageBox("消息内容","消息标题");

·Log和c语言中的print用法一致
  1. log("hello cocos");

·标签Label
  1. LabelTTF *label = LabelTTF::create();
  2. label->setString("hello");
  3. label->setFontSize(36);
  4. label->setPosition(size.width/2,size.height/2);
  5. addChild(label);

·输入文本TextFieldTTF

这个比较复杂,点击之后要唤起输入法

  1. //输入文本
  2. TextFieldTTF *tf = TextFieldTTF::textFieldWithPlaceHolder("在这里输入","宋体",20);
  3. //设置位置
  4. tf->setPosition(size.width/2,size.height/2);
  5. addChild(tf);
  6. //注册监听
  7. auto listener = EventListenerTouchOneByOne::create();
  8. //传递tf
  9. listener->onTouchBegan = [tf](Touch *t,Event *event){
  10. if(tf->getBoundingBox().containsPoint(t->getLocation())){
  11. tf->attachWithIME();
  12. }else{
  13. tf->detachWithIME();
  14. }
  15. return false;
  16. };
  17. //加入监听
  18. Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraPHPriority(listener,tf);

·菜单Menu
  1. auto closeItem = MenuItemImage::create(
  2. "CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));
  3. closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2,origin.y + closeItem->getContentSize().height/2));
  4.  
  5. // create menu,it's an autorelease object
  6. auto menu = Menu::create(closeItem,NULL);
  7. menu->setPosition(Vec2::ZERO);
  8. this->addChild(menu,1);
好了,基本空间就介绍到这里,接下来就是不断熟悉的过程了

猜你在找的Cocos2d-x相关文章