Sprite Kit - 如何访问子节点功能/ IVAR?

时间:2014-05-05 20:28:43

标签: objective-c sprite-kit

我正在使用Tiled处理tile map。我的地图上有一个玩家生成点的对象。

我已经能够产生玩家对象了。但是,我不知道如何访问播放器对象函数或IVAR?

在MyScene:

TileMapLayer *_playerLayer = [[TmxTileMapLayer alloc]
                initWithTmxObjectGroup:[_tileMap groupNamed:@"Spawn"]
                tileSize:_tileMap.tileSize
                gridSize:_bgLayer.gridSize
                objectType:@"Player"];
[_worldNode addChild:_playerLayer];

这将创建一个玩家对象。播放器对象具有我想要运行的功能和我想要查询的IVAR。注意,一些函数返回值。

来自Player对象的示例:

- (BOOL)currentWeaponStatus
{
    return _weapon.hidden;
}

到目前为止,我认为我可以使用以下方式访问它:

BOOL weaponHidden = [[_playerLayer childNodeWithName:@"person"] childNodeWithName:@"weapon"].hidden;

但这似乎并不“简单”。如何在_playerLayer中访问子节点的函数/ IVAR?

仅供参考:我在播放器节点上有一个武器节点 - 这会被添加到拼贴图层节点。

感谢您的时间。 -shoes

1 个答案:

答案 0 :(得分:1)

这就是我需要的:

Person *player = (Person *)[_playerLayer childNodeWithName:@"person"];

感谢Ray Wenderlich的Chris ......

http://www.raywenderlich.com/forums/viewtopic.php?f=38&t=11775&p=61090#p61090