有没有办法让for循环总能在swift中检查这个循环外的变量值?

时间:2016-12-10 15:26:07

标签: ios swift for-loop sprite-kit

我正在尝试通过sprite工具包中的for循环创建节点,但我希望每次“for循环”想要创建一个新节点来检查循环外的值是否更改(取决于此值的节点)创建)。 我想做的是在CreatSquares函数

抱歉我的英文不好

import SpriteKit

import GameplayKit

var Score = 0

class GameScene: SKScene {

let SquareSide = 100
var touchedNode = SKNode()
var touchLocation = CGPoint()
let ScoreLabel = SKLabelNode()

override func didMove(to view: SKView) {
    CreatSquares()

    }


func CreatSquares(){
    for _ in 0...100{

        /*===========================================================================================
        ((((((((  I want here while creating nodes if the score is equal (let's say) to 20 ->>>> change in SquareSide or change anything in square's properties ))))))))

         The problem is that the 100 square created together
         ================================================================================================
        */

      let square = SKShapeNode(rect: CGRect(x: Int(arc4random_uniform(UInt32(self.frame.width))), y: Int(arc4random_uniform(UInt32(self.frame.height))), width: SquareSide, height: SquareSide))
        if Score <= 10{
            square.fillColor = UIColor.orange}
        else{
        square.fillColor = UIColor.blue
        }
    square.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: square.frame.width, height: square.frame.height), center: CGPoint(x: square.position.x, y: square.position.y))
    square.physicsBody?.affectedByGravity = false
    square.physicsBody?.allowsRotation = false
    square.physicsBody?.categoryBitMask = 0
    square.name = "square"
        self.addChild(square)



    }


}
func CreatScoreLabel(){
let ScoreLabel = SKLabelNode()
    ScoreLabel.text = "Your Score is:\(Score)"
    ScoreLabel.position = CGPoint(x: self.frame.width/2, y: self.frame.height - 50)
    ScoreLabel.color = UIColor.white
    self.addChild(ScoreLabel)

}

func updatScore(){
 ScoreLabel.text = "Your Score is:\(Score)"

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches {
        touchLocation = touch.location(in: self)
        touchedNode = self.atPoint(touchLocation)
        if touchedNode.name == "square"{
            Score += 1
            touchedNode.removeFromParent()
            }


    }

    }

override func update(_ currentTime: TimeInterval) {
    updatScore()
}

}

0 个答案:

没有答案