获取场景中CCSprite

如下代码获取不到,求解。

CCComRender pSpriteUIRender = (CCComRender) (pFishJoyScene->getChildByTag(10022)->getComponent(“CCSprite”));

CCSprite sprite =(CCSprite)(pSpriteUIRender->getNode());

是否已经在编辑器中为节点设置了正确的tag?
10022?

tag不能重复的. 比如多个节点设置了10022同样值的tag, 不确保能获取到那个节点.

tag是设置正确的

getComponent(“CCSprite”)方法填的应该是sprite的名字。也就是name属性。你有正确填写么?

运行时, 是报什么错? 哪一个变量为空了?

pFishJoyScene->getChildByTag(10022) 这个是空的

这个说明编辑器里面没有设置正确的Tag.

编辑器里面设置了之后, 还需要导出哦 . 是否忘记了导出???

另外如果是iOS, Xcode里面有一个资源更新的老问题.

就是说, 你更新了比如json, 但实际上Xcode很难将其更新到模拟器或者真机上去.具体的更新规则不详.

解决办法是:深度清理, 删除模拟器/真机上游戏. Xcode项目做清理(最好清理所有临时文件)

我把场景json文件贴上来供大家看看。

{
“classname”: “CCNode”,
“name”: null,
“canedit”: false,
“objecttag”: 10000,
“rotation”: 0,
“scalex”: 1,
“scaley”: 1,
“visible”: 1,
“x”: 0,
“y”: 0,
“zorder”: 1,
“gameobjects”:
{
“__type”: “ComGameObjectSurrogate:#EditorCommon.JsonModel”,
“classname”: “CCNode”,
“name”: null,
“canedit”: true,
“objecttag”: 10010,
“rotation”: 0,
“scalex”: 1,
“scaley”: 1,
“visible”: 1,
“x”: 1.4896011352539063,
“y”: 3.6411590576171875,
“zorder”: 1,
“gameobjects”:
{
“__type”: “ComGameObjectSurrogate:#EditorCommon.JsonModel”,
“classname”: “CCNode”,
“name”: null,
“canedit”: true,
“objecttag”: 10022,
“rotation”: 0,
“scalex”: 0.799999952,
“scaley”: 0.799999952,
“visible”: 1,
“x”: 324.48995971679688,
“y”: 587.75543212890625,
“zorder”: 1,
“gameobjects”: ],
“components”:
{
“__type”: “ComSpriteSurrogate:#EditorCommon.JsonModel.Component”,
“classname”: “CCSprite”,
“name”: “CCSprite”,
“file”: null,
“fileData”: {
“path”: “room.png”,
“plistFile”: null,
“resourceType”: 0
}
}
]
},

这个json看起来没有什么问题.

你在什么环境下, 是否是xcode?

问题找到了,cocosstudio的bug,当在场景编辑器里面有gui层的时候,如果在gui层上添加node,此时代码里是无法得到这个对象的,除非在编辑器里把node层级改变一下,移出layer层。