加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 20:12:49 所属栏目:百科 来源:网络整理
导读:cocos2dx其实也和普通软件开发一样,不外乎一些控件的组合,再配合一些逻辑的处理,就成了我们熟悉的游戏了。 今天就让我们一起来熟悉一下常用的控件 1.在游戏开发中我们把每一个界面称作一个场景(Scene),每一个场景是由很多层(Layer)组成的,每一个层中又

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读