2014-02-22 45 views
1

我偶然發現了一個問題,但無法找到答案。我正在使用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 {當我改變等級還應該改變速度參數。當然,這是行不通的,因爲我相信當場景初始化時我的動作就開始了,我永遠不會切換參數。

我需要做的是連續填充屏幕,氣泡以一定的速度出現(相對於關卡)。

我真的不知道如何解決這個問題,因爲它似乎我,就像我需要停止和重新啓動莫名其妙的動作序列...

期待您的寶貴意見。

回答

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價值更頻繁,這將讓遊戲更加難以產生氣泡。