我正在尝试制作一个需要大量按钮来控制玩家移动的基本游戏。请记住,我使用的是 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 的值添加到计时器上精灵的位置,但仍然没有运动。