我正在为我的简单游戏中的商店部分制作按钮。当按钮被点击时,我想将它短暂地突出显示一段时间。我正在使用 SKActions 来完成此操作。以下是我的代码的相关部分:
@interface TheScene()
{
...
SKAction *visualFeedbackSequence;
SKSpriteNode *buttonForFeedback;
CGRect orangeCheckboxRect;
...
}
...
@implementation TheScene
...
-(void)initWithSize:(CGSize)size {
...
buttonForFeedback = [SKSpriteNode spriteNodeWithImageNamed:@"button"];
SKAction *makeItWhite = [SKAction colorizeWithColor:[SKColor whiteColor] colorBlendFactor:0.8 duration:0.85];
SKAction *andBackAgain = [SKAction colorizeWithColor:[SKColor whiteColor] colorBlendFactor:0.0 duration:0.01];
visualFeedback = [SKAction sequence:@[makeItWhite, andBackAgain]];
orangeCheckboxRect = buttonForFeedback.frame;
...
return self;
}
...
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
...
if(CGRectContainsPoint(orangeCheckboxRect, location) ) {
NSLog(@"Running vis feedback on orange check"); //Inserted for debugging
[orangeCheckbox runAction:visualFeedback];
if([shopController hasUpgrade:@"theupgrade"]) {
[shopController setCurrentUpgrade:@"theupgrade"];
}
...
注意:shopController 所做的所有事情都是返回 YES 或 NO,如果他们有选择的升级。
我遇到的问题是,当我第一次点击我在这里使用的按钮时,效果就会出现。但是随后的任何点击都不会显示效果。我放在 if 语句中的调试 NSLog 确实执行了,表明操作应该直接在它之后运行。我想我需要更改此处使用的 SKActions,但我已经尝试了许多相关操作的组合,但均未成功。这是 SKActions 的一个已知错误,还是我只是做错了什么?