修改一个精灵的高度,先把精灵添加进去再修改就能成功,先修改精灵后把精灵添加进去就失败了,是有什么原因在里面?
如图:
原来的高度
240的高度 ![]()
先修改高度,后把它加进去,结果在预览界面显示是原来的高度,打断点看是修改后的高度,高度不一致,
![]()
而我把高度修改放到了下面,显示的结果就正确了
![]()
先加进去再修改,和先修改再加进去有区别么?
修改一个精灵的高度,先把精灵添加进去再修改就能成功,先修改精灵后把精灵添加进去就失败了,是有什么原因在里面?
如图:
原来的高度
240的高度 ![]()
先修改高度,后把它加进去,结果在预览界面显示是原来的高度,打断点看是修改后的高度,高度不一致,
![]()
而我把高度修改放到了下面,显示的结果就正确了
![]()
先加进去再修改,和先修改再加进去有区别么?
/**
* !#en Height of node.
* !#zh 节点高度。
* @property height
* @type {Number}
* @example
* node.height = 100;
*/
height: {
get () {
if (this._sizeProvider) {
var h = this._sizeProvider._getHeight();
this._contentSize.height = h;
return h;
}
else {
return this._contentSize.height;
}
},
set (value) {
if (value !== this._contentSize.height) {
var sizeProvider = this._sizeProvider;
if (sizeProvider) {
sizeProvider.setContentSize(sizeProvider._getWidth(), value);
}
if (CC_EDITOR) {
var clone = cc.size(this._contentSize);
}
this._contentSize.height = value;
if (CC_EDITOR) {
this.emit(SIZE_CHANGED, clone);
}
else {
this.emit(SIZE_CHANGED);
}
}
},
},
看了一下源码可能跟this._sizeProvider有关,没有搜到哪里有给这个变量赋值
搞不明白,好像cocos2d-x就没这个问题,我还是第一次碰到
设置parent不能代替addChild
是这个原因导致的么
刚刚试了一下,换为this.node.addChild(node),还是一样的情况
这是因为设置图片时,会刷新一下参数,变成新的图片参数,所以之前设置的被修改了,

这里设置成custom试下
如果不设置成这个,就先换图再修改参数,把设置参数封装一下,设置完图片再调用一下
我只设置了图的高度,没换其他图,应该没关系吧
这个就是换图呀,之前没图,然后添加就有图了
设置高度就是换图么
之前是有图的,只是没添加进父节点
看错问题了。。。
我现在是修改了高度在添加进父节点,图片预览不是我修改后的高度,是图片本身的高度,我打断点进去看了,图片是我修改后的高度, 但是预览时候是图片本身的高度
而我先添加进父节点,再修改高度,图片预览显示就是我修改后的高度
你是怎么创建的图片?要不你先做个demo上传上来?
我把一个图片变为prefab,直接cc.instantiate初始化
代码是这样的:
var node = cc.instantiate(this.nodePrefab);
node.height = 240;
node.parent = this.node;
预览出现异常, node的高度是图片本来的高度,我打了断点看,node.height就是240
而这样写就正确了
var node = cc.instantiate(this.nodePrefab);
node.parent = this.node;
node.height = 240;
有区别么?
你在prefab 里把图片的model 设置成custom试试

没遇到过这个问题。。
不行,一样
算了,反正没影响,我只要先添加在修改
关注一波