我已经实现了 3 个类。
-Scene.m & .h
Scene.m:(在头文件中有 HudLayer 和 BackgroundLayer 属性)
-(id)init{
self = [super init];
if(self != nil){
//Level1Layer
_level1GameplayLayer = [Level1Layer node];
[self addChild:_level1GameplayLayer z:0];
//Hud Layer
_hudLayer = [HUDLayer node];
[self addChild:_hudLayer z:1];
}
return self;
}
- 拥有这 2 层
BackgroundLayer.m & .h
&&HUDLayer.m & .h
每次单击屏幕时,我都会收到类似“触摸屏”(在 backgroundlayer.m 上调用)的日志通知,然后是在HUDLayer.m & .h
我这样称呼它:
[_hud getAmmo:self.ammoLeft magsLeft:self.magsLeft];
_hud
是Scene.m
这样说的:(及其导入的backgroundlayer.m
)
HUDLayer *hudLayer = [HUDLayer node];
[self addChild:hudLayer z:1];
背景是 z:0。
BackgroundLayer.m 在@interface 下也有属性:( 我意识到这是 nil 因为它没有初始化,我该如何初始化它???)
@property (strong) HUDLayer *hud;
在 getAmmo 的调用之间:我做了 3 个 CLOGS,一个在“我们即将获得弹药:”之前
一个在 HUDLayer.m 上调用“Inside getAmmo:”的函数内部
还有一个在“我们得到了弹药:”之后
背景层.m:
CCLOG(@"We're about to getAmmo");
_hud getAmmo:self.ammoLeft magsLeft:self.magsLeft];
CCLOG(@"We got the ammo:%d, mags:%d",self.ammoLeft,self.magsLeft);
HUDLayer.m:
-(void)getAmmo:(int)ammo magsLeft:(int)magsLeft
{
CCLOG(@"We did this");
hudMagsLeft=magsLeft;
hudAmmoLeft = ammo;
CCLOG(@"HUD MAGS: %d, AMMO:%d", hudMagsLeft,hudAmmoLeft);
}
我只得到之前和之后的一个,函数被调用的方式没有警告,但由于某种原因它没有被调用。没有if语句或任何东西..我做错了什么???
所以为了让问题更简单,我如何访问其他类的属性/函数?
谢谢你的时间,祝你好运。