在我的简单游戏中,我正在为一个商店区做按钮。当按钮被点击时,我想简短地强调一下它变白了一段时间。我正在使用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内容都是返回是或否,如果他们有选择的升级。
我的问题是,当我第一次点击我正在使用的按钮时,效果就会显现出来。但是任何后续的水龙头,效果都不会显现出来。我在if语句中放入的调试NSLog确实执行了,这意味着操作应该在它之后直接运行。我想我需要改变这里使用的SKActions,但我已经尝试了许多相关操作的组合,但都没有成功。这是SKActions已知的bug,还是我做错了什么?
发布于 2014-03-21 14:21:57
由于您保留了对反馈操作的引用,所以每次运行它时都需要复制:
[orangeCheckbox runAction:[visualFeedback copy]];https://stackoverflow.com/questions/22547483
复制相似问题