2014-02-14 1 views
0

Я очень новичок в spriteBuilder и cocos2d, что означает, что я уверен, что я делаю что-то неправильно ... Я просто не знаю, что.Не удается получить доступ к CCNode в качестве дочернего объекта сцены

Я добавил CCNode в «сцену уровня», которую загружаю в качестве детской сцены в свою «сцену игрового процесса», но я не могу понять, как ссылаться на CCNode, находящийся на уровне место действия.

Вроде как это:

Геймплей сцены (CCScene) Level1 сцена (CCScene) Target (CCNode)

И тогда в моем коде я:

gameplay = [CCBReader loadAsScene:@"Levels/Level1"]; 

А потом Я хочу получить позицию моей цели, которую я разместил внутри Уровня. Как мне это сделать? У него есть «корневой корень doc», но я могу получить доступ только к нему в пользовательском «целевом» классе. Как получить доступ к этому внутреннему игровому процессу? Этот бит кода дает мне {0, 0} при запуске из игрового процесса, но {393, 193} при запуске внутри целевого класса.

NSLog(@"Target pos = %@", NSStringFromCGPoint(_target.position)); 

Прошу прощения, если это сбивает с толку, я постараюсь сделать его более ясным. И жаль, если это глупый вопрос, я только начинаю.

Спасибо за любую помощь.

Edit: Logging [самоуправления детей] на геймплей дает:

("<CCSprite = 0x993e670 | Rect = (0.00,0.00,500.00,281.50) | tag = | atlasIndex = -1>", 
"<CCSprite = 0x9c9a350 | Rect = (68.00,0.50,32.00,25.50) | tag = | atlasIndex = -1>", 
"<CCPhysicsNode = 0xba3a220 | Name = >", 
"<CCButton = 0x9c9db20 | Name = >", 
"<CCButton = 0x9ca33e0 | Name = >", 
"<CCLabelTTF = 0x9ca5320 | FontSize = 50.0>", 
"<CCButton = 0x9ca6010 | Name = >", 
"<CCButton = 0x9ca7f50 | Name = >", 
"<CCSlider = 0x9caa060 | Name = >", 
"<CCLabelTTF = 0x9caeed0 | FontSize = 16.0>", 
"<CCLabelTTF = 0x9cafa10 | FontSize = 15.0>", 
"<CCSprite = 0x9cb02f0 | Rect = (107.50,29.00,75.00,64.50) | tag = | atlasIndex = -1>", 
"<CCSprite = 0x9cb08c0 | Rect = (107.50,29.00,75.00,64.50) | tag = | atlasIndex = -1>", 
"<CCSprite = 0x9cb0e90 | Rect = (107.50,29.00,75.00,64.50) | tag = | atlasIndex = -1>", 
"<CCLabelTTF = 0x9cb1460 | FontSize = 50.0>") 
+0

Нет такой вещи, как глупый вопрос, мой друг! :), первое, что нужно проверить, это если ваш '_target' загружен правильно? это нуль или это фактический спрайт, который вы хотите? вы можете попробовать 'NSLog (@"% @ ", _target)' и сообщить нам, какой тип CCNode вы видите? –

+0

Конечно! В моем классе «target.h» он дает «», а в моем gameplay.h он дает «(null) ». (В spritebuilder мой спрайт в target.ccb имеет пользовательский класс «Target» и doc root var «_target») –

+0

Так вот в чем проблема: '_target' является' null' ... в 'gameplay', как вы инициализируете' _target '? вероятно, вот где ошибка! можете ли вы добавить фрагмент из реализации 'gameplay'? –

ответ

0

я решил. Казалось, что с тех пор у меня была иерархия, как это: gamePlay-> levelNode-> level1

Я должен был сделать это, чтобы установить свою цель:

_target = [[levelNode getChildByName:@"level1" recursively:false] getChildByName:@"target" recursively:false]; 

Кажется, что решить ее сейчас по крайней мере. :)