Widget.clone问题[已解决]

在studio创建了一个滚动层scrollview,在scrollview上添加一个layer,layer包含一个背景和3个子控件,在工程里面获得layer

通过layer.clone() 复制 获得layer1,

同时 通过setName 和 setPosition 修改layer1的name 和position

但是最后layer1的显示位置还是在layer的位置上,并没有在新设置的位置上。

打印出来显示layer1的坐标信息是新设置的位置信息,求教是什么问题

代码:

ctor:function(){
this._super();
var layer = ccs.uiReader.widgetFromJsonFile(res.ui.backpack);
this.layer = layer;
this.addChild(layer);

var item = ccui.helper.seekWidgetByName(this.scrollView,"item0");
var tag = item.getTag();
var size = this.scrollView.getInnerContainerSize();

var tmp = item.clone();
tmp.setTag(tag+1);
tmp.setName("item1");
this.scrollView.addChild(tmp);
var pos = cc.p(124,size.height -100);
tmp.setPosition(pos);
}

```

已经解决了吗?请问是怎么解决的? 我也遇到类似问题,谢谢

因为scrollView用了相对布局,所以setPosition无效了
需要修改相对布局坐标
var margin = new ccui.Margin(
left,
top,
right,
bottom
);
tmp.getLayoutParameter().setMargin(margin);

:2::2:
好久以前的帖子啊。。。

嗯,是的,我的问题有点不同,不过,也找到原因了: 因为我添加的结点是同一个,Sprite没有clone方法,所以我改用了 ImageView来加载,它有clone方法,这样,就能正常显示了。 如果不克隆的话,只能显示一个图片