Мой GameScene.m файл:Метод экземпляра Cocos2d 2.0 не найден; приемник является прямым класс
#import "GameScene.h"
// Needed to obtain the Navigation Controller
#import "AppDelegate.h"
#pragma mark - GameScene
// GameScene implementation
@implementation GameScene
// on "init" you need to initialize your instance
-(id) init
{
self = [super init];
if (self != nil)
{
[self addChild:[GameLayer node]];
}
return self;
}
- (void) dealloc
{
[super dealloc];
}
@end
@implementation GameLayer
@synthesize hero;
-(id) init
{
if((self=[super init]))
{
hero = [[Hero alloc] initWithGame:self];
}
return self;
}
-(void) dealloc
{
[super dealloc];
}
@end
Мой GameScene.h файл:
#import <GameKit/GameKit.h>
// When you import this file, you import all the cocos2d classes
#import "cocos2d.h"
// GameScene
@interface GameScene : CCScene
{
}
@end
@class Hero;
@interface GameLayer : CCLayer
{
Hero * _hero;
NSMutableArray * _bullets;
bool _playerFiring;
NSMutableArray * _enemies;
float _lastTimeEnemyLaunched;
float _enemyInterval;
int _score;
int _lives;
int _bombs;
int _level;
}
@property (nonatomic,retain) Hero * hero;
@property (nonatomic,readwrite) bool playerFiring;
@property (nonatomic,readwrite) float lastTimeEnemyLaunched;
@property (nonatomic,readwrite) float enemyInterval;
@property (nonatomic,retain) NSMutableArray * enemies;
@property (nonatomic,retain) NSMutableArray * bullets;
@property (assign,readwrite) int score;
@property (assign,readwrite) int lives;
@property (assign,readwrite) int bombs;
@property (assign,readwrite) int level;
@end
Мой Hero.h файл:
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GameScene.h"
@class GameLayer;
@interface Hero : CCNode
{
CCSprite * mySprite;
GameLayer * theGame;
float _lastTimeFired;
float _fireInterval;
float _firingSpeed;
float _movementSpeed;
}
@property (nonatomic,retain) CCSprite * mySprite;
@property (nonatomic,retain) GameLayer * theGame;
@property (nonatomic,readwrite) float lastTimeFired;
@property (nonatomic,readwrite) float fireInterval;
@property (nonatomic,readwrite) float firingSpeed;
@property (nonatomic,readwrite) float movementSpeed;
@end
И мой герой. м файл:
#import "Hero.h"
@implementation Hero
@synthesize theGame,mySprite;
-(id) initWithGame:(GameLayer *)game
{
self = [super init];
if(self != nil)
{
// ask director for the window size
CGSize size = [[CCDirector sharedDirector] winSize];
self.theGame = game;
mySprite = [CCSprite spriteWithFile:@"hero.png"];
[theGame addChild:mySprite z:2];
[mySprite setPosition:ccp(size.width/2,50)];
self.lastTimeFired = 0;
self.fireInterval = 3;
self.firingSpeed = 10;
self.movementSpeed = 5;
}
return self;
}
-(void) dealloc
{
[super dealloc];
}
@end
И вот моя проблема: я получаю два предупреждения - 1. «instance method -initWithGame не найден (тип возврата по умолчанию -« id »)» и 2. «Receiver« Hero »- это класс вперед, а соответствующий @interface может не существовать "
Я попытался добавить" - (id) initWithGame: (GameLayer *) игра "line to hero.h interface", но это не сработает. Я попытался добавить эту строку, но с + вместо -, но ничего.
В конце концов, без моего героя отображается на экране. Кто-нибудь знает, как решить эту проблему (я использую новейшую версию Xcode)?
У вас есть дополнительная полутолица, висящая в воздухе: P – 2013-02-13 17:47:00
Спасибо, @ H2CO3. – sergio
Добро пожаловать, сказал компилятор ;-) – 2013-02-13 17:49:12