如下代码获取不到,求解。
CCComRender pSpriteUIRender = (CCComRender) (pFishJoyScene->getChildByTag(10022)->getComponent(“CCSprite”));
CCSprite sprite =(CCSprite)(pSpriteUIRender->getNode());
如下代码获取不到,求解。
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层。