cocos2dx其实也和普通软件开发一样,不外乎一些控件的组合,再配合一些逻辑的处理,就成了我们熟悉的游戏了。
今天就让我们一起来熟悉一下常用的控件
1.在游戏开发中我们把每一个界面称作一个场景(Scene),每一个场景是由很多层(Layer)组成的,每一个层中又包含了很多精灵(Sprite),当然我们别忘了我们最大的指挥官导演(Director)。
接下来我们看一看他们是怎么运作的。
首先在AppDeletegate.cpp中我们看到如下代码
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLViewImpl::create("My Game"); director->setOpenGLView(glview); } // turn on display FPS director->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object auto scene = HelloWorld::createScene(); // run director->runWithScene(scene); return true; }关键在于
director->runWithScene(scene);把场景运行起来
然后进入场景
Scene* HelloWorld::createScene() { // 'scene' is an autorelease object auto scene = Scene::create(); // 'layer' is an autorelease object auto layer = HelloWorld::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene; }创建一个场景,再创建一个层,并且把这个层加入到场景中
最后执行HelloWorld::init()方法进行一些初始化
2.常用控件
·消息对话框MessageBox
MessageBox("消息内容","消息标题");
·Log和c语言中的print用法一致
log("hello cocos");
·标签Label
LabelTTF *label = LabelTTF::create(); label->setString("hello"); label->setFontSize(36); label->setPosition(size.width/2,size.height/2); addChild(label);
·输入文本TextFieldTTF
这个比较复杂,点击之后要唤起输入法
//输入文本 TextFieldTTF *tf = TextFieldTTF::textFieldWithPlaceHolder("在这里输入","宋体",20); //设置位置 tf->setPosition(size.width/2,size.height/2); addChild(tf); //注册监听 auto listener = EventListenerTouchOneByOne::create(); //传递tf listener->onTouchBegan = [tf](Touch *t,Event *event){ if(tf->getBoundingBox().containsPoint(t->getLocation())){ tf->attachWithIME(); }else{ tf->detachWithIME(); } return false; }; //加入监听 Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraPHPriority(listener,tf);
·菜单Menu
auto closeItem = MenuItemImage::create( "CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::menuCloseCallback,this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2,origin.y + closeItem->getContentSize().height/2)); // create menu,it's an autorelease object auto menu = Menu::create(closeItem,NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu,1);好了,基本空间就介绍到这里,接下来就是不断熟悉的过程了