Я сейчас на грани того, чтобы бросить свой компьютер в стену, потому что я не могу понять это. Я сделал около 200 поисков в Google, и каждая ссылка была нажата на странице 6 лайков. Я не могу найти ответ. Так вот грязь:
Я хочу, чтобы в моем классе врагов был метод стрельбы. Достаточно просто, верно? Ну, у меня есть действие для перемещения врагов в методе HelloWorldLayer. Я хочу найти способ вызвать (некоторый тип) CCAction этот метод из класса Enemies.m. Пожалуйста помоги! И @Lukman ваш ответ по объектно-ориентированному программированию не сработал. Спасибо!
EDIT:
Вот что в HelloWorldLayer.m необходимо для ответа:
action = [CCSequence actions:
[CCMoveBy actionWithDuration:1 position:ccpMult(ccpNormalize(ccpSub(moveToPoint, buffDude.position)), 75)],
[CCMoveBy actionWithDuration:3 position:ccp(buffDude.position.x,buffDude.position.y)],
nil];
CCCallFuncO *a = [CCCallFuncO actionWithTarget:buffDude selector:(@selector(shoot:)) object:buffDude];
CCSequence *seq = [CCSequence actions:action,a, nil];
CCRepeatForever *repeat = [CCRepeatForever actionWithAction:seq];
[buffDude runAction:repeat];
А вот что есть в Enemies.m:
@implementation BigAndStrongEnemy
+(id)enemy
{
BigAndStrongEnemy *enemy = nil;
if((enemy = [[[super alloc] initWithFile:@"bigAndStrongEnemy.gif"] autorelease])) {
enemy.hp = 200;
enemy.pointsWorth = 1000;
}
return enemy;
}
-(void)spriteMoveFinished:(id)sender {
CCSprite *b = (CCSprite *)sender;
[self removeChild:b cleanup:YES];
}
-(void)shoot {
CCSprite *b = [CCSprite spriteWithFile:@"bullet.gif"];
b.position = ccp(self.position.x,self.position.y);
[self addChild:b];
[bullets addObject:b];
CGSize winSize = [[CCDirector sharedDirector] winSize];
CGPoint point = CGPointMake((winSize.width - (winSize.width - self.position.x)),0);
[b runAction:[CCSequence actions:
[CCMoveBy actionWithDuration:0.5 position:point],
[CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)],
nil]];
}
-(void)shoot:(id)sender {
BigAndStrongEnemy *e = (BigAndStrongEnemy *)sender;
[e shoot];
}
@end