如何在不同的类中访问CCMenu的标签

时间:2011-12-07 12:12:56

标签: iphone objective-c xcode cocos2d-iphone

    //class1
    - (void)starButtonTapped:(CCMenuItem*)sender {
        switch(sender.tag) {
            case 1: NSLog(@"Pressed 1");
                class2 *myFood = [[class2 alloc]init];
                [self addChild:myFood];
                break;


        }
    }

     //class2
        -(id) init
        {
            if( (self=[super init])) {
                //ccmenu
                CCMenuItem *food1 = [CCMenuItemImage  itemFromNormalImage:@"Food0001.png" selectedImage:@"Food0002.png" target:self selector:@selector(food:)];
         CCMenuItem *food2 = [CCMenuItemImage  itemFromNormalImage:@"Food0003.png" selectedImage:@"Food0004.png" target:self selector:@selector(food:)];
                food1.tag = 1;
food2.tag =2
        CCMenu *menu1 = [CCMenu menuWithItems:food1,food2, nil];
                [self addChild:menu1];
            }
            return self;
        }

        -(void)food:(CCMenuItem*)sender{
            switch (sender.tag ) {
                case 1:
                    NSLog(@"food1");
                    //go back to class2 and  add food1 sprite 

                    break;
                case 2:
                    NSLog(@"food1");
                    //go back to class2 and  add food2 sprite

                    break;

                default:
                    break;
            }
        }

在按下按钮后,它从class1开始,它将class2的child添加到另一个菜单中。 如何删除子class2然后根据我在class2中按下的按钮添加不同的精灵?感谢帮助。是否可以在class1中的class2中使用标签?

1 个答案:

答案 0 :(得分:1)

请仔细阅读以下代码。


     //class2
    -(id) init
    {
        if( (self=[super init])) {
            //ccmenu
            CCMenuItem *food1 = [CCMenuItemImage  itemFromNormalImage:@"Food0001.png" selectedImage:@"Food0002.png" target:self selector:@selector(food:)];
     CCMenuItem *food2 = [CCMenuItemImage  itemFromNormalImage:@"Food0003.png" selectedImage:@"Food0004.png" target:self selector:@selector(food:)];
            food1.tag = 1;
            food2.tag =2
        // menu1 is instance variable ( declared in class2 interface )
        menu1 = [CCMenu menuWithItems:food1,food2, nil];
            [self addChild:menu1];
        }
        return self;
    }

    -(void)food:(CCMenuItem*)sender{
        switch (sender.tag ) {
            case 1:
                NSLog(@"food1");
                //go back to class2 and  add food1 sprite 
                [self removeChild:menu1 cleanup:YES];
                CCSprite *spriteFood = [CCSprite spriteWithFile:@"food1.png"];
                [self addChild:];
                break;
            case 2:
                NSLog(@"food2");
                //go back to class2 and  add food2 sprite
                [self removeChild:menu1 cleanup:YES];
                CCSprite *spriteFood = [CCSprite spriteWithFile:@"food2.png"];
                [self addChild:spriteFood];
                break;

            default:
                break;
        }
    }