2015-11-07 74 views
0

這是我的代碼不兼容的塊指針SKSpriteNode

- (void) update:(NSTimeInterval)currentTime 
{ 
    [self.children enumerateObjectsUsingBlock:^(SKSpriteNode * child, NSUInteger idx, BOOL *stop) { 
    child.position = CGPointMake(child.position.x-self.scrollingSpeed, child.position.y); 
    if (child.position.x <= -child.size.width){ 
     float delta = child.position.x+child.size.width; 
     child.position = CGPointMake(child.size.width*(self.children.count-1)+delta, child.position.y); 
     } 
    }]; 
} 

,我得到一個錯誤

Incompatible block pointer types sending 'void (^)(SKSpriteNode *__strong, NSUInteger, BOOL *)' to parameter of type 'void (^ _Nonnull)(SKNode * _Nonnull __strong, NSUInteger, BOOL * _Nonnull)' 

,我不知道爲什麼。我試圖將其更改爲SKNode,但它說尺寸不存在。

任何想法將不勝感激。

+0

您需要使用完整準確的錯誤消息更新您的問題。從不縮寫錯誤信息,當你發佈。 – rmaddy

+0

@rmaddy對不起,我現在就添加! –

+0

根據錯誤,只需將'SKSpriteNode'更改爲'SKNode'。 – rmaddy

回答

3

枚舉塊語法是不正確的,你需要改變:

[self.children enumerateObjectsUsingBlock:^(SKSpriteNode * child, NSUInteger idx, BOOL *stop) 
{ 
    child.position = CGPointMake(child.position.x-self.scrollingSpeed, child.position.y); 
    if (child.position.x <= -child.size.width) 
    { 
     float delta = child.position.x+child.size.width; 
     child.position = CGPointMake(child.size.width*(self.children.count-1)+delta, child.position.y); 
    } 
}]; 

[self.children enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) 
{ 
    SKSpriteNode *child = (SKSpriteNode *)object; 
    child.position = CGPointMake(child.position.x-self.scrollingSpeed, child.position.y); 
    if (child.position.x <= -child.size.width) 
    { 
     float delta = child.position.x+child.size.width; 
     child.position = CGPointMake(child.size.width*(self.children.count-1)+delta, child.position.y); 
    } 
}]; 

枚舉塊的第一個參數是idSKSpriteNode類型。 NSArray沒有這樣的實現。

+0

謝謝你現在完美的作品!非常感謝。我開始更快速地開發,但我想ID給OBJ-C一試! –

+0

@JamesAnderson:Obj C.的快樂編碼 –