cocos2d-x基础 - 常用控件(1)
1. Sprite
在 init( ) 函数中加入如下内容:
Sprite *s = Sprite::create("ball.jpeg");
addChild(s);
得到结果:
使用如下语句设置图片的锚点:
s->setAnchorPoint(Point(0, 0));
得到结果:
除此之外还有其他的设置函数:
s->setPosition(<const Vec2 &pos>); // 设置位置
s->setScale(<float scaleX>, <float scaleY>); // 设置缩放
2. Director、Scene、Layer
-
Director就是导演的意思
-
导演的作用是切换场景(scene)
-
场景之内包含有层(layer)
-
游戏内容运行在层layer中
创建一个scene和layer:
Scene *s = Scene::create();
Layer *l = Layer::create();
将layer添加到scene:
s->addChild(l);
3. log
log是用来输出日志的API
log("hello world");
log("your money is %d yuan", 30);
用法类似于C语言中的printf()函数
4. MessageBox
MessageBox(const char *msg, const char *title);
MessageBox("消息内容", "消息标题");
5. LabelTTF
显示一个字符框:
LabelTTF *label = LabelTTF::create("标题内容", "宋体", 20);
label->setPosition(visableSize.width/2, visableSize.height/2);
addChild(label);
visableSize是通过以下获取得到的屏幕参数:
auto visableSize = Director::getInstance()->getVisibleSize();
6. TextFieldTTF
输入框控件
TextFieldTTF * tf = TextFieldTTF::textFieldWithPlaceHolder("在这里输入", "宋体", 14);
tf->setPosition(visableSize.width/2, visableSize.height/2);
addChild(tf);
此时得到如下效果:
不能输入也不能点击,因为没有关联到IME输入法。需要进行以下操作:
// 定义一个侦听器
auto listener = EventListenerTouchOneByOne::create();
// 定义在触摸事件发生时的动作
listener->onTouchBegan = [tf](Touch * t, Event * event){
if (tf->getBoundingBox().containsPoint(t->getLocation())) {
log("点进了区域内");
// 连接输入法
tf->attachWithIME();
}else{
// 点击区域外就关闭输入法
tf->detachWithIME();
}
return false;
};
// 通过Director中的事件派发器来添加一个事件侦听器
Director::getInstance()
->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, tf);
此时就可以输入了,并且控制台输出了Log信息