2015-01-04 71 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