我已经实现了3个类。无法从Cocos2D中的另一个类访问函数
- 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
Everyti我,我点击屏幕,我得到这样的“感动屏幕”(被称为上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属性: (我意识到这是零,因为它没有初始化,如何初始化这个???)
@property (strong) HUDLayer *hud;
getAmmo的调用之间:我是做3个木屐,一个BEFORE “我们即将getAmmo:”
一个INSIDE上HUDLayer.m函数调用 “内部getAmmo:”
,一次次 “我们gotTheAmmo:”
BackgroundLayer.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);
}
我只是在得到一个之前和之后的一个,还有在路上在没有警告的功能被调用但有些原因没有被调用。没有如果语句或任何..什么是我做错了吗?
所以为了让问题更简单,我如何从其他类访问属性/函数?
谢谢你的时间,有一个好的。在我做这个scene.m
-(id)initWithHUD:(HUDLayer *)hud;
然后:
_backgroundLayer = [[[BackgroundLayer alloc] initWithHUD:_hudLayer] autorelease];
上Backgroundlayer
我认为你将不得不发布一些更多的代码......这不是在您的'_hud'变量都应该向我都清楚被分配(是'_hud'无?)。在没有任何关于'getAmmo:magsLeft:'调用的上下文的情况下,很难说出还有什么可能导致呼叫不被执行。 –
我已经分配了@property(strong)HUDLayer * hud;在顶部文件(我很抱歉,我刚才正在编辑该编辑..) – user1876553
正如Aaron所说,我们需要更多的信息。至少,我们需要所有代码在其中分配/改变'_hud',调用'get Ammo'周围的行(至少在日志记录之前)以及'getAmmo'的代码。更好的是最小的整体代码,它重现了错误。 – Matthias