NSTimer产卵功能

时间:2015-08-27 13:03:09

标签: swift nstimer

我必须遵循以下代码:

func didBeginContact(contact: SKPhysicsContact) { // Only run if its a "contact"


    // ENDING
    var contactBody1: SKPhysicsBody
    var contactBody2: SKPhysicsBody

    if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
        contactBody1 = contact.bodyA
        contactBody2 = contact.bodyB

    } else {

        contactBody2 = contact.bodyB
        contactBody1 = contact.bodyA
    }

    if ((contactBody1.categoryBitMask == 2) && (contactBody2.categoryBitMask == 1)) {

       contactBody2.node!.removeFromParent()

        //p1.fillColor = SKColor.greenColor()
        //p1.strokeColor = SKColor.greenColor()

    }}

此代码正在运行碰撞测试。当对象A和B发生碰撞时,我想改变“p1”的颜色。

接下来我有这段代码。

var moveBlockLine1 = SKAction.moveByX(-self.frame.size.width * 2, y: 0, duration: NSTimeInterval(self.frame.size.width / 60))


var p1 = SKShapeNode(rectOfSize: CGSize(width: 50, height: 50))
p1.fillColor = SKColor.whiteColor()
p1.strokeColor = SKColor.whiteColor()
p1.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 50, height: 50))
p1.position = CGPoint(x: CGRectGetMidX(self.frame) + self.frame.size.width / 2 + 50, y: CGRectGetMidY(self.frame)) //
p1.physicsBody?.affectedByGravity = false // Will not be affected by gravity
p1.physicsBody?.dynamic = false // Stops the image moving if its hit by a ball.
p1.physicsBody?.friction = 0
p1.alpha = 1

此代码在屏幕上从右到左产生块。我的问题是,为了使第一个代码工作,我需要将“var p1 = SKShapeNode(rectOfSize:CGSize(width:50,height:50))”移到另一个地方,因为此刻,swift无法识别碰撞代码中的“p1”。

当我移动“var p1”部分时,碰撞代码起作用,因为现在可以识别p1,但是,代码的第二部分,即产生,使应用程序崩溃,因为现在swift无法生成具有的对象已经产生过。产卵代码正在运行NSTimer。

无论如何?谢谢:))

0 个答案:

没有答案