SKLabelNode不跟随64位iPhone的performSelector(setHidden)

时间:2014-04-05 22:38:21

标签: objective-c ios7 32bit-64bit

我正在使用精灵工具包,我有一个我在initWithSize方法中设置的SKLabelNode。它被声明为..

@property (nonatomic, strong) SKLabelNode *chargesToShowUponCompletion;

在initWithSize方法中,我以这种方式创建..

_chargesToShowUponCompletion = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
_chargesToShowUponCompletion.fontSize = 40;
_chargesToShowUponCompletion.fontColor = [SKColor whiteColor];
_chargesToShowUponCompletion.position = CGPointMake(self.size.width/2, 1.5/3.0 * self.size.height);
_chargesToShowUponCompletion.zPosition = 20;
[self addChild:_chargesToShowUponCompletion];
[_chargesToShowUponCompletion setHidden:YES];

正如您所看到的,我在将LabelNode添加到场景后立即隐藏它。我实际上有几个我这样创造的,并且我在不同的时间展示它们。特别是这个需要显示一点,然后消失。所以为了实现这一点,我使用了以下内容。

[_chargesToShowUponCompletion performSelector:@selector(setHidden:) withObject:@YES afterDelay:3];

这在iPhone 5,iPhone 4和模拟器中完美运行。但是,当我在64位计算机或模拟器上运行它时,它不起作用。它实际上就像我有setHidden withObject:@NO。我认为它与64和32位iPhone有关,但我无法弄明白。我阅读了Apple关于支持两者的文档,并且我将我的架构设置为标准版。有什么方法可以让这个选择器在两种类型的机器上运行?此外,我创建的其他LabelNodes在不同时间被隐藏和显示,它们都可以工作,但它们都没有处理选择器。有任何想法吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

因此,如果有人跟着这个,或者遇到同样的问题,我会用两种不同的方式解决它。第一个是保留@selector(setHidden)代码行。我用@(1l)替换了@YES,这解决了在5s上运行的问题。

[_chargesToShowUponCompletion performSelector:@selector(setHidden:) withObject:@(1l) afterDelay:3];  //change @YES to @(1l)
[_substanceToShowUponCompletion performSelector:@selector(setHidden:) withObject:@(1l) afterDelay:3];

更新:我听说以这种方式使用performSelector是不好的。我会选择运行块。

另一种方法是像这样制作SKAction run Block。

SKAction *action1 = [SKAction waitForDuration:3.0];

SKAction *action2 = [SKAction runBlock:^{
    _chargesToShowUponCompletion.hidden = YES;}];

SKAction *action3 = [SKAction runBlock:^{
 _substanceToShowUponCompletion.hidden = YES;}];

SKAction *seq1 = [SKAction sequence:@[action1, action2]];
SKAction *seq2 = [SKAction sequence:@[action1, action3]];

[_chargesToShowUponCompletion runAction:seq1];
[_substanceToShowUponCompletion runAction:seq2];

我跑了两次,因为我有两个SKLabelnodes要隐藏。希望这有助于某人!!!!