2015-01-04 133 views
-1

我在didBeginContact委託方法動態添加SKSpriteNode無法動態添加SKSpriteNode?

這裏是我的代碼

-(void)adBall 
    { 
     SKSpriteNode *obj = [[SKSpriteNode alloc]initWithImageNamed:@"ball.png"]; 
     obj.physicsBody = [SKPhysicsBody bodyWithTexture:obj.texture size:obj.texture.size]; 
     obj.position = CGPointMake(100, 100); 
     obj.name = OBSTACLE_KEY; 

     obj.physicsBody.categoryBitMask = BallCategory1; 
     obj.physicsBody.contactTestBitMask = GreenLineCategory | RedLineCategory ;; 
     obj.physicsBody.collisionBitMask = GreenLineCategory | RedLineCategory ;; 

     obj.physicsBody.affectedByGravity = YES; 
     obj.physicsBody.dynamic = YES; 
     obj.physicsBody.friction = 0.0f; 
     obj.physicsBody.linearDamping = 0.0f; 
     obj.physicsBody.restitution = 1.0f; 
     obj.physicsBody.allowsRotation = NO; 
     [obj.physicsBody applyForce:CGVectorMake(200, 300)]; 
    } 

-(void)didBeginContact:(SKPhysicsContact *)contact 
{ 
    SKPhysicsBody *firstBody, *secondBody; 

    if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask) 
    { 
     firstBody = contact.bodyA; 
     secondBody = contact.bodyB; 
    } 
    else 
    { 
     firstBody = contact.bodyB; 
     secondBody = contact.bodyA; 
    } 

    if ([firstBody.node.name isEqual: OBSTACLE_KEY] && ([secondBody.node.name isEqual: BLACKLINE_KEY])) 
    { 
     [self adBall]; 
    } 
} 

,但不能出現在屏幕上,它只是表明在球底部和消失。

如果在didMoveToView方法中加上[self adBall];則比工作正常。

因此,普爾茲告訴我我在這裏錯了嗎?

回答

1

你永遠的adBall方法中運行

[self addChild:obj]; 

。因此新創建的精靈將不會被添加到場景圖中,並且自然不會被繪製(在方法結束時它會被丟棄)。

+0

THX。我在那裏添加行,但它在我在didMoveToView委託方法中調用方法時起作用。不在didBeginContact中工作。 – LanWanMan 2015-01-06 15:49:49

0

Ok完成它。

LearnCocos2D說,我沒加[self addChild:obj];我再補充一點線,但比它不是在didMoveToView工作不是我做了什麼叫做一段時間後方法。

像:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
     [self adBall]; 
    }); 
+0

是沒有意義的,不應該是必要的,你可能有另一個bug,現在應用一個「addChild解決方法」,恰好解決了你認爲是問題的問題,但真正的問題肯定是其他問題。 – LearnCocos2D 2015-01-06 16:26:39

+0

但是當我調用加載視圖的方法在那裏工作。 – LanWanMan 2015-01-06 16:32:01