我有两个需要在单独的.m文件中相互通信的CCLayer
如何在HUDLayer.m中获取以下代码以与Level1.m中的玩家精灵对话?
- (void)MoveUpSelected {
CCMoveTo* moveup = [CCMoveBy actionWithDuration:1 position:ccp(0,-100)];
CCSequence* sequence = [CCSequence actions: moveup, nil];
[Player runAction:sequence];
}
请帮助我几天坚持这一点。至少如果有人能指出我正确的方向。谢谢!
答案 0 :(得分:1)
我建议您使用场景对象来控制其图层之间的通信。 您可以创建HUD协议并将场景设置为其委托。并且对于每个HUD事件,场景将通过访问适当的层(存储为其成员)来相应地做出反应。
这样你就不必进行这种层耦合了。
答案 1 :(得分:0)
要访问其他图层,您需要对其进行引用。有很多方法可以做到这一点。在您的情况下,只需为每个图层添加一个属性到CCScene类。然后,图层可以通过其父级访问场景:
CCLayer* otherLayer = [(YourActualSceneClass*)self.parent otherLayer];
非常重要的是,不要在任一层中存储对其他图层的引用,或者如果这样做,请确保将其作为弱引用,或者在清理方法中将它们设为零。否则,您创建了一个保留周期。