【知乎解答】cocos2d-x中Contestsize和Dimensions有什么不同
来源:互联网 发布:中国馆建筑 知乎 编辑:程序博客网 时间:2024/06/05 17:36
其他他们直接的差别不大,都是节点未转化前大小!Dimensions翻译为:规模,大小;
我们先看一下他们的源码:
/** Sets the untransformed size of the Label ina more efficient way.(其实就是一种更加高效的设置Size的方式) */
void Label::setDimensions(float width, float height)
{
if (height != _labelHeight || width != _labelWidth)
{
_labelWidth = width;
_labelHeight = height;
_labelDimensions.width = width;
_labelDimensions.height = height;
_maxLineWidth = width;
_contentDirty = true;
}
}
{
if (height != _labelHeight || width != _labelWidth)
{
_labelWidth = width;
_labelHeight = height;
_labelDimensions.width = width;
_labelDimensions.height = height;
_maxLineWidth = width;
_contentDirty = true;
}
}
const Size& getDimensions() const{ return _labelDimensions;}
上述两个接口就是Dimensions的使用,可以看出使用Dimensions是对Label自己的长宽进行设置见其成员:_labelDimensions,_labelWidth ,_labelHeight 。
_labelDimensions使用如下:
可以看出_labelDimensions这个值只是进行set和get,而没有其他什么用。
_labelWidth ,_labelHeight使用如下:
其中使用了cocos2d.Label.alignText,也就是文字的对齐方式。所以我们很自然的想到Dimensions应该与对齐方式有关,其中setMaxLineWidth这些也说明了只有在setDimensions以后,对齐方式,显示方式等才会生效。
接着我们通过编码查看自己的推论(新建一个工程(cocos2dx 3.6版本),在HelloWord中尝试一把就好了):
1、setDimensions
auto rootNode = CSLoader::createNode("MainScene.csb");
Label* lb1 = Label::createWithSystemFont("123abc123abc123abc123abc", "Arial", 24);
lb1->setPosition(300, 800);
lb1->setDimensions(200, 40);
rootNode->addChild(lb1);
Label* lb1 = Label::createWithSystemFont("123abc123abc123abc123abc", "Arial", 24);
lb1->setPosition(300, 800);
lb1->setDimensions(200, 40);
rootNode->addChild(lb1);
2、setContentSize
auto rootNode = CSLoader::createNode("MainScene.csb");
Label* lb1 = Label::createWithSystemFont("123abc123abc123abc123abc", "Arial", 24);
lb1->setPosition(300, 800);
lb1->setContentSize(Size(200, 40));
rootNode->addChild(lb1);
Label* lb1 = Label::createWithSystemFont("123abc123abc123abc123abc", "Arial", 24);
lb1->setPosition(300, 800);
lb1->setContentSize(Size(200, 40));
rootNode->addChild(lb1);
结论:
setContentSize和setDimensions都是设置节点大小。 但是对Label而言,setContentSize并没有什么用,而是需要setDimensions设置节点大小,而且Label只有调用setDimensions可以进行换行等功能。
//注:Label设置尺寸大小,使用的是setDimensions,而不是setContentSize !
1 0
- 【知乎解答】cocos2d-x中Contestsize和Dimensions有什么不同
- cocos2d-x中Contestsize和Dimensions有什么不同?
- gradle和maven有什么用?分别有什么区别?[转载来源于知乎]
- c和c++中struct有什么不同?C++中的struct和class有什么不同?
- mybatis3中mapper文件中 #{...} 和 ${...}有什么不同
- 空和“ ”有什么不同?
- WEB 页中OnInit 和 Page_Init 事件有什么不同
- vector中capacity()和size()有什么不同?
- C++中,exit和return有什么不同?
- Android中raw文件夹和asset文件夹有什么不同
- 数据库中存储过程和函数有什么不同
- Android中raw文件夹和asset文件夹有什么不同
- objective-c中 -(void)和+(void)有什么不同
- Struts中DispatchAction和Action类有什么不同?
- 在C++中.操作和->操作有什么不同
- java中++和+=的执行原理有什么不同?
- Node.js中exports和module.exports有什么不同?
- android中px,dp,dip和sp有什么不同?
- Lucene入门教程
- Linux 下安装MYSQL (一、安装)
- 机器学习--主题模型&检测劣质答案
- Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解
- iOS 动画效果:Core Animation & Facebook's pop
- 【知乎解答】cocos2d-x中Contestsize和Dimensions有什么不同
- Spring学习第一天
- Spring事务Transaction配置的五种注入方式详解
- 变换后矩阵右上三角元素和与左下三角元素和可能的最大差值
- CentOS使用163镜像
- Spring结合java Quartz配置实例代码
- OC面试中,Block常出现的三个问题
- <一>认识
- 利用正则表达式去除字符串中的空格