我有两个类文件hudlayer.m和actionlayer.m
我有一个名为跳入hudlayer.m 的方法 我有一个名为 jumpone in actionlayer.m
的方法-(void) jumpone {
_heroBody->ApplyLinearImpulse(b2Vec2(_playerVelX/[_lhelper pixelsToMeterRatio], 1.25), _heroBody->GetWorldCenter());
}
另一个名为jump in hudlayer.m的方法
-(void)jump {
ActionLayer *aob = [[ActionLayer alloc] init];
[aob jumpone];
}
问题是当我从 actionlayer.m 调用Jumpone方法时,我的sprite跳转(即调用的方法)
我的动作方法层
- (id)initWithHUD:(HUDLayer *)hud
{
if ((self = [super init])) {
[self setupWorld];
}
return self;
}
但是当我从hudlayer.m 中通过跳转方法调用 jumpone时,它会失败并且我的应用程序崩溃了。 任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
每次调用jump时,都会创建一个ActionLayer的新实例。接下来,你建立了一个新的世界,一切都变得纠缠不清。此外,它的内存泄漏。
让ActionLayer成为HUDLayer的iVar并致电
aob = [[ActionLayer alloc] init];
在HUDs init方法中。 别忘了在HUDLayer的dealloc中释放aob
答案 1 :(得分:0)
问题的最佳解决方案是为hudlayer&添加标签。行动层
例如:hudlayer.tag = 1; actionlayer.tag = 2;
然后只需使用getChildByTag
:
[[[[CCDirector sharedDirector]runningScene] getChildByTag:1]jumpone];