【问题标题】:Dynamically allocate a parameter for action when running a sequence运行序列时为动作动态分配参数
【发布时间】:2014-02-22 23:12:31
【问题描述】:

我偶然发现了一个问题,但我找不到答案。我正在使用 Xcode 中的 SK 模板来创建 iOS 游戏。我是初学者,请多多包涵。

基本上我有这个代码:

SKAction *releaseBubbles = [SKAction sequence:@[
                                                    [SKAction performSelector:@selector(createBubbleNode)onTarget:self],
                                                    [SKAction waitForDuration:speed]]];
[self runAction: [SKAction repeatAction:releaseBubbles
                                      count:300]];

中执行
-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {

我在-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 中将关卡更改为我的游戏,当我更改关卡时,它也应该更改该速度参数。当然,这不起作用,因为我相信我的动作是在场景初始化时开始的,而我永远无法切换参数。

我需要做的是不断填充屏幕,气泡以一定的速度(相对于关卡)出现。

我真的不知道如何解决这个问题,因为在我看来我需要以某种方式停止并重新启动动作序列......

期待您的宝贵意见。

【问题讨论】:

    标签: ios iphone sprite-kit duration skaction


    【解决方案1】:

    要不断用气泡填充屏幕,您可以使用SKSceneupdate: 方法。这是怎么做的。

    首先,添加一个属性,该属性将存储您上次添加气泡的日期。

    @property(nonatomic, strong) NSDate *lastBubbleCreationDate;
    

    然后,将您的 update: 方法更改为:

    -(void)update:(CFTimeInterval)currentTime
    {
        // Create new bubble every 5s.
        if (ABS([_lastBubbleCreationDate timeIntervalSinceNow]) > 5)
        {
            [self createBubbleNode];
        }
    }
    

    最后,在您的createBubbleNode 方法中,您必须存储创建最后一个气泡的时间:

    -(void)createBubbleNode
    {
        // Your code here
    
        // Set the date to now.
        _lastBubbleCreationDate = [NSDate date];
    }
    

    您还需要调用createBubbleNode 来设置_lastBubbleCreationDate 的初始值。您可以在 didMoveToView: 方法中执行此操作。只需将此方法添加到您的场景实现中:

    - (void)didMoveToView:(SKView *)view
    {    
        // Creates first bubble and sets the initial value of the _lastBubbleCreationDate
        [self createBubbleNode];
    }
    

    在下一个关卡中,您可以更改5s 值以更频繁地创建气泡,这会使游戏更加困难。

    【讨论】:

      猜你喜欢
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2016-11-11
      相关资源
      最近更新 更多