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); 好了,基本空间就介绍到这里,接下来就是不断熟悉的过程了