2014-05-07 51 views
0

我試圖檢查這個SKSpriteNode是否已經從屏幕上移除來實現一段代碼,但如果它有但我似乎無法弄清楚。有沒有什麼方法可以檢查SKSpriteNode是否已經從父級刪除?

我的代碼;

if (player.position.y > self.frame.size.height) { 
    NSLog(@"out of frame"); 
    [self runAction:[SKAction sequence:@[ 
             [SKAction waitForDuration:0.5], 
             [SKAction runBlock:^{ 

     levelMenu *mainMenu = [[levelMenu alloc] initWithSize:self.size]; 
     [self.view presentScene:mainMenu transition:[SKTransition fadeWithDuration:0.6]]; 

    }], 
             ]]]; 
} 

但這不起作用。

有什麼我可以做的,以測試它何時被從父母刪除。即東西沿着「If (player hasLeftScene)(player hasBeenRemovedFromParent)」或什麼的?

我也試過在player.position.y> 568(4英寸顯示器)時測試,但它也沒有工作。

+0

離開屏幕(如:當前不可見)不會刪除節點。您可以通過使用self.scene.view.frame和player.frame進行CGRectIntersectsRect測試來測試「不在屏幕上」。 – LearnCocos2D

+2

最好的辦法是檢查像這個player.parent父屬性。如果這是零球員已被從父母中刪除。 –

回答

5

檢查node.parent。如果沒有父母(從一個父母中刪除),則爲零。

if (node.parent) { 
// node has parent, was not removed 
} else { 
// node does not have parent, was removed 
} 
+0

你能提供一個例子嗎? –

+0

@ ShenHutah更新回答 – Dvole

+0

如果一個節點沒有父節點,這並不意味着它被刪除 – nicael

相關問題