Доступ к методам получения - PullRequest
0 голосов
/ 23 декабря 2011

Привет, ребята, пожалуйста, кто-нибудь может помочь с этой ошибкой: "Доступ к неизвестному методу получения" жизней "" Я получаю вторую строку (строка CCSprite) кода ниже.

GamePlayLayer.h - это:

#import "cocos2d.h"
#import "Box2D.h"
#import "GLES-Render.h"
#import <Foundation/Foundation.h>


@class UILayer;
@class Insect;

@interface GamePlayLayer : CCLayer {

b2World * world;
GLESDebugDraw * debugDraw;
CCSpriteBatchNode * sceneSpriteBatchNode;
Insect * insect;
b2Body *body;
SceneUILayer * uiLayer;
    double startTime;
bool gameOver;
bool gameWon;
NSMutableArray *lives;

}

- (id)initWithUILayer:(UILayer *)sceneUILayer;


@end

GamePlayLayer.m

UILayer * sr = (UILayer *)[self.parent getChildByTag:10];
CCSprite * live = [sr.lives objectAtIndex:self.lives];
[live setVisible:NO];

Хорошо, я должен добавить следующую информацию:

UILayer.h (UILayer - это слой HUD):

@interface UILayer : CCLayer {

NSMutableArray *lives;

   }

 @property (nonatomic,retain) NSMutableArray *lives;

UILayer.m:

#import "UILayer.h"
#import "GameManager.h"


@implementation UILayer


@synthesize lives;

    - (id)init {
        if ((self = [super init])) {


    lives = [[NSMutableArray arrayWithCapacity:3]retain];

    for(int i=0;i<3;i++)
    {
        CCSprite * life = [CCSprite spriteWithFile:@"life_Label.png"];
        [life setPosition:ccp(winSize.width/18+ 32*i,290)];
        [self addChild:life];
        [lives addObject:life];
    }
   }

Ответы [ 3 ]

0 голосов
/ 23 декабря 2011

вы определяете недвижимость для жизни?

например. в вашем .h:

@interface blah

// ...

@property (assign) NSInteger lives;

@end

тогда в вашем .m:

@implementation blah

@synthesize lives = _lives;

//your code

@end
0 голосов
/ 23 декабря 2011

Вы могли бы:

  • не имеют @property int lives; в заголовочном файле
  • не имеют @synthesize lives; в файле реализации.
  • имеет lives как нечто иное, чем int (или может быть преобразовано в int).

Но из-за предоставленного вами фрагмента это просто плохое предположение.

0 голосов
/ 23 декабря 2011

Способ, которым компилятор видит ваш метод -setVisible, является методом-установщиком для видимого свойства. Я предполагаю, что это не то, что вы хотели. Попробуйте переименовать ваш метод во что-то вроде [live visible: NO]; или что-то кроме -set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...