コードはx1とy1変数を格納しますが、touchesEnded関数が開始されると直ぐに元の0.0の値に戻ります。私はtouchesBegan関数が終了した後にこれらの値を残しておきたい。これらの値はどのように保存できますか?グローバルに値を格納する方法は?
var x1: CGFloat = 0.0
var y1: CGFloat = 0.0
var x2: CGFloat = 0.0
var y2: CGFloat = 0.0
//touch initialized
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
var x1 = location.x
var y1 = location.y
print(x1,y1)
}
}
//touch ends
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
print(x1,y1)
let location2 = touch.location(in: self)
let x2 = location2.x
let y2 = location2.y
let originX = min(x1,x2)
let originY = min(y1,y2)
let cornerX = max(x1,x2)
let cornerY = max(y1,y2)
let boxWidth = cornerX - originX
let boxHeight = cornerY - originY
let box = SKSpriteNode()
box.size = CGSize(width: boxWidth, height: boxHeight)
box.color = SKColor.black
box.position = CGPoint(x:originX, y: originY)
addChild(box)
print(x1,y1,x2,y2)
}
}
4つのCGFloatの代わりに2つの可変CGPointsを宣言してみませんか? –
ところで、GLOBALというプロパティを作るつもりはないので質問のタイトルを変えてください。 –
@Leo彼の視点からは、彼はグローバル化しようとしているので、タイトルが立っていると思います。私は、変数がローカル変数、クラス変数またはグローバル変数を持つことができ、実際のグローバル変数ではなくクラスプロパティを必要としていることを認識しているとは思いません。 –