要素が選択されているかどうかを確認しています。
func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
// First, see if the game is in a paused state
if !gamePaused
{
// Declare the touched symbol and its location on the screen
let touch = touches.anyObject! as? UITouch
let location = touch.locationInNode(symbolsLayer)
これは以前はXcode 6.2で正常にコンパイルされていましたが、6.3のアップデートでは、「let touch = touches.anyObject!as?UITouch」という行でエラーがスローされます。
「セット」には「anyObject」という名前のメンバーがありません
多くの同様の質問を読みましたが、「値を使用するには、最初に「アンラップ」する必要があります」と頭を抱えるようには思えません。特に回答が通知に焦点を当てているように見えるためです。
どうもありがとうございます。 W
let touch = touches.first as? UITouch
.first
を使用すると、UITouchの最初のオブジェクトにアクセスできます。
Xcode 6.3はSwift(1.2)の更新バージョンを使用するため、古いコードをSwift 1.2に変換する必要があります(編集->変換->最新のSwiftへ) )。
Swift 1.2は、Set
(Objective-Cの古いバージョン)ではなくNSSet
(Swiftの新機能)を使用します。したがって、touchbegan関数もパラメータをNSSetからSetに変更します。
詳しくは これを参照
これはsymbolsLayerの複数のタッチをチェックします
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
// First, see if the game is in a paused state
if !gamePaused
{
// Declare the touched symbol and its location on the screen
for touch: AnyObject in touches {
let location = (touch as! UITouch).locationInNode(symbolsLayer)
}
}
}