- [CCScene setOffsetx:]: нераспознанный селектор, отправленный экземпляру - PullRequest
0 голосов
/ 23 марта 2012

, пожалуйста, помогите мне, я очень новый в объективе-c

У меня есть 2 простейших класса (ниже, первый, второй)

Я хотел бы установить offsetx свойства rolypoly объекта второго класса, такие как self.rolypoly.offsetx = 1 или выполнение, используя [self.rolypoly setOffx]; для выполнениячто-то, но у меня всегда есть ошибки:

пытаться [self.rolypoly setOffx];во втором классе

- [CCScene setOffx:]: нераспознанный селектор, отправленный экземпляру 0x91d0b70 '

или

, пытаясь self.rolypoly.offsetx = 1;во втором классе

- [CCScene setOffsetx:]: нераспознанный селектор, отправленный на экземпляр 0x808bfc0 '

первый класс

//************************************************************ 
       #import <Foundation/Foundation.h>
        #import "cocos2d.h"

        @interface RolyPoly : CCLayer {

            CCAction *_walkAction; 
            CCSprite *_rolypoly;
            int offsetx;
            int offsety;
        }

        @property (nonatomic, retain) CCSprite *rolypoly;
        @property (nonatomic, retain) CCAction *walkAction;
        @property (nonatomic, assign) int offsetx;
        @property (nonatomic, assign) int offsety;

        +(id) scene;
        -(void) setOffx;
        @end
//************************************************************     
        #import "GameLayer.h"
        #import "RolyPoly.h"

        @implementation RolyPoly

        @synthesize rolypoly = _rolypoly;
        @synthesize walkAction = _walkAction;
        @synthesize  offsetx = _offsetx;
        @synthesize  offsety = _offsety;

        +(id) scene
        {
            CCScene *scene = [CCScene node];

            RolyPoly *layer = [RolyPoly node];

            [scene addChild: layer];

            return scene;
        }

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

                [self scheduleUpdate];
            }
            return self;
        }
        -(void) setOffx
        {

            NSLog(@"setOffx");
        }

        -(void) update:(ccTime)delta
        {

        }
        - (void) dealloc
        {
            self.rolypoly = nil;
            self.walkAction = nil;
            [super dealloc];
        }
        @end

второй класс

//************************************************************ 
    #import <Foundation/Foundation.h>
    #import "cocos2d.h"
    #import "RolyPoly.h"


    @interface GameLayer : CCLayer {

        RolyPoly *_rolypoly;
    }

    // returns a CCScene that contains the HelloWorldLayer as the only child
    +(CCScene *) scene;
    @property (nonatomic, assign) RolyPoly * rolypoly;

    @end

//************************************************************   
    #import "GameLayer.h"
    #import "RolyPoly.h"

    // HelloWorldLayer implementation
    @implementation GameLayer

    @synthesize  rolypoly = _rolypoly;

    +(CCScene *) scene
    {
        CCScene *scene = [CCScene node];
        GameLayer *layer = [GameLayer node];
        [scene addChild: layer];
        return scene;
    }

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

            CGSize screenSize = [[CCDirector sharedDirector] winSize];

            self.rolypoly = [RolyPoly scene];
            [self addChild:self.rolypoly z:1];
            [self.rolypoly setOffx];
            [self scheduleUpdate];

        }
        return self;
    }


    - (void)update:(ccTime)dt {

    }

    - (void) dealloc
    {
        [super dealloc];
    }
    @end

1 Ответ

0 голосов
/ 23 марта 2012

Ваша проблема заключается в том, что вы передаете объект CCScene в переменную rolyPoly, а не в объект rolyPoly.

    +(id) scene
    {
        CCScene *scene = [CCScene node];

        RolyPoly *layer = [RolyPoly node];

        [scene addChild: layer];

        return scene;
    }

return scene;

Deleteваш метод сцены в классе RolyPoly и просто используйте его в вашей сцене

       self.rolypoly = [RolyPoly node];
...