2012-06-24 1 views
0

У меня есть два файла класса hudlayer.m и actionlayer.mВызов другого метода из Cocos2d Худ слоя

У меня есть метод, называемый скачок в hudlayer.m И у меня есть метод, называемый jumpone в actionlayer. м

-(void) jumpone { 
    _heroBody->ApplyLinearImpulse(b2Vec2(_playerVelX/[_lhelper pixelsToMeterRatio], 1.25), _heroBody->GetWorldCenter()); 
} 

, а другой метод, называемый скачок hudlayer.m

-(void)jump { 
    ActionLayer *aob = [[ActionLayer alloc] init]; 
    [aob jumpone]; 
} 

Проблема заключается в том, когда я называю метод Jumpone из actionlayer.m мой спрайт прыгает (то есть метод, называемый)

Мой метод инициализации действий слоя

- (id)initWithHUD:(HUDLayer *)hud 
{ 
    if ((self = [super init])) { 

     [self setupWorld]; 
    } 
    return self; 
} 

Но когда я называю jumpone с помощью метода прыжка в от hudlayer.m он терпит неудачу, и мое приложение разбилось. Любая помощь будет оценена .thanks

+0

Можете ли вы опубликовать метод инициализации в ActionLayer? и некоторые следы от ошибки? – giorashc

+0

Я обновил метод init – vishnu

+0

ok ... позволяет увидеть всю инициализацию ... :). Эй, и что случилось с вызовом jumpone в методе прыжка? – giorashc

ответ

0

лучшее решением для вашей проблемы является добавление тега в hudlayer & Действия слоя

например: hudlayer.tag = 1; actionlayer.tag = 2;

, а затем просто использовать getChildByTag вроде этого:

[[[[CCDirector sharedDirector]runningScene] getChildByTag:1]jumpone]; 
+0

Привет, спасибо за ответ ... но если я добавлю HUDLayer.tag = 2; я получаю ошибку "тег свойства, не найденный на объекте HUDlayer" – vishnu

+0

ну не HUDLayer.tag буквально ... i ment add self.tag в hud layer метод init ... я должен был быть более конкретным – skytz

+0

Спасибо большое bro его работа сейчас :) Брат я могу получить ваш Skype? – vishnu

0

Каждый раз, когда вы вызываете прыжок, он создает новый экземпляр вами ActionLayer. И после этого вы настраиваете новый мир, и все запутывается. Кроме того, это утечка памяти.

Сделать вас ActionLayer к Ивар из HUDLayer и вызвать

aob = [[ActionLayer alloc] init]; 

в методе инициализации Huds. Не забудьте освободить А в dealloc из HUDLayer

Смежные вопросы