想在UI编辑器做出来的Panel上添加一个Sprite,怎么做

很多时候我用UI编辑器做出来的是一个框架一样的东西,然后由程序再动态的往上面添加其他元素,
比如UI编辑器做了个Panel,然后程序添加一个Sprite
这该如何实现?

因为Panel是Layout,是Widget的子类,而Sprite没有继承Widget
于是UILayout.cpp里面
void Layout::addChild(Node child, int zOrder, int tag)
{
supplyTheLayoutParameterLackToChild(static_cast<Widget
>(child));
Widget::addChild(child, zOrder, tag);
_doLayoutDirty = true;
}

这个static_cast说明了,layout上只能添加Widget的子类。。。
我该怎么办?

当然绕弯子的方法也是有的,
我在Layout上放个ImageView,这个ImageView的getVirtualRenderer() 是个Sprite,
这样我可以把非Widget的Node添加到这个Sprite上。。。。

this->addchild(Sprite)

this是哪个? Layout不能直接addChild非Widget的子类

o - o 你更新一下引擎试试?

直接this。。。。

3.0版本开始不再限制node和widget的嵌套,2.x版本引擎则需要分别使用addchild(),addnode()方法。

我是3.0啊
不能AddChild啊
代码里面不是很明白么

因为Panel是Layout,是Widget的子类,而Sprite没有继承Widget
于是UILayout.cpp里面
void Layout::addChild(Node child, int zOrder, int tag)
{
supplyTheLayoutParameterLackToChild(static_cast<Widget
>(child));
Widget::addChild(child, zOrder, tag);
_doLayoutDirty = true;
}
这个static_cast在运行时会crash掉的啊

3.0多少啊 alpha的话赶紧更新一下吧

xx_>CCNode::addChild(node,0,0);

这个问题我自己解答一下吧
版本3.0RC

如果你想在一个layout上添加一个sprite,用addChild是不行的,正如我6楼说的那样,代码里明摆着不可能
如果你在一个其他什么ui控件上添加一个sprite直接就addChild就行了