0

[送信者の期間]をintdurに渡そうとするまで、すべてが正常に機能します。TAGで動作しますが、私自身の変数では動作しません。私はdurationSpellでINTとNSintegerの両方を試しました。私がやろうとしているのは、spawnShootをトリガーする10個の異なるボタンがあり、すべて異なる期間です。クリックしたボタンから継続時間を取得したい。

@interface ClassUI : NSObject {

    CCMenuItemImage *button;
    CCSprite *shot;
    int durationSpell;
}
-----------------
    ClassUI *spellshealP1 = [[ClassUI alloc]init];

        spellshealP1.button = [CCMenuItemImage itemFromNormalImage:@"smallHeal.png" selectedImage:@"healempty.png" target:self selector:@selector(spawnShoot:)];

        spellshealP1.button.tag = 101;
        spellshealP1.durationSpell = 10;

CCMenu *player1menu = [CCMenu menuWithItems:spellshealP1.button, spellbighealP1.button, spellcureP1.button, spellfocusP1.button, spellpoisonP1.button, spellbfBallP1.button, spellsfBallP1.button, nil];
player1menu.position = ccp(MoveMenuInXP1, (768/2) - (numberOfButtons*buttonSize/2) + buttonSize/2);
[self addChild:player1menu];
-----------------            
        -(IBAction)spawnShoot:(id)sender{
           int tag = [sender tag]; 
           int dur = [sender durationSpell];
        }
4

1 に答える 1

1

さて、ここでの問題は、送信者がspellShealではなくspellSheal.button.
だからあなたは取得しようとしていますspellSheal.button.durationSpellが、実際にはspellSheal.durationSpell...

したがって、これを行う最善の方法は、ClassUI に CCMenuItemImage を継承させることです。これが私がそれを行う方法です:

@interface ClassUI : CCMenuItemImage {
  CCSprite *shot;
  int durationSpell;
}
-----------------
ClassUI* spellshealP1 = [ClassUI itemFromNormalImage:@"smallHeal.png" selectedImage:@"healempty.png" target:self selector:@selector(spawnShoot:)];
spellshealP1.tag = 101;
spellshealP1.durationSpell = 10;
-----------------            
-(IBAction)spawnShoot:(id)sender{
  int tag = [sender tag]; 
  int dur = [sender durationSpell];
}
于 2012-04-29T22:26:54.737 に答える