プレイヤーの動きを制御するためにボタンの深刻さを必要とする基本的なゲームを作ろうとしています。cocos-2d を使用していることを覚えておいてください。私の目標は、ボタンを押したままにし、押したときにスプライトを動かすことです。私が現在使用しているコードは次のようになります。
CCMenuItemHoldable.h
@interface CCMenuItemSpriteHoldable : CCMenuItemSprite {
bool buttonHeld;
}
@property (readonly, nonatomic) bool buttonHeld;
CCMenuItemHoldable.m
@implementation CCMenuItemSpriteHoldable
@synthesize buttonHeld;
-(void) selected
{
[super selected];
buttonHeld = true;
[self setOpacity:128];
}
-(void) unselected
{
[super unselected];
buttonHeld = false;
[self setOpacity:64];
}
@end
そしてボタンの設定について
rightBtn = [CCMenuItemSpriteHoldable itemFromNormalSprite:[CCSprite spriteWithFile:@"art/hud/right.png"] selectedSprite:[CCSprite spriteWithFile:@"art/hud/right.png"] target:self selector:@selector(rightButtonPressed)];
CCMenu *directionalMenu = [CCMenu menuWithItems:leftBtn, rightBtn, nil];
[directionalMenu alignItemsHorizontallyWithPadding:0];
[directionalMenu setPosition:ccp(110,48)];
[self addChild:directionalMenu];
これはすべてうまくいくようですが、うまくいくと
-(void)rightButtonPressed:(id) sender
{
if([sender buttonHeld])
targetX = 10;
else{
targetX = 0;
}
}
クラッシュは修正されましたが、スプライトを動かそうとしています。私のゲーム ティック関数では、targetX の値をタイマーのスプライトの位置に追加しますが、動きはありません。