質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

841閲覧

for文の正しい書き方が知りたいです。

Byon-0421

総合スコア6

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/03/30 19:44

Swift

1 //必要な画像枚数を算出 2 let needNumber = 2.0 + (self.frame.size.width / texture.size().width) 3 4 //アニメーションを作成 5 let moveAnim = SKAction.moveBy(x: texture.size().width, y: 0.0, duration: Double(CGFloat(texture.size().width)) / 10.0) 6 let resetAnim = SKAction.moveBy(x: texture.size().width, y: 0.0, duration: 0.0) 7 let repeatForeverAnim = SKAction.repeatForever(SKAction.sequence([moveAnim, resetAnim])) 8 9 //画像の配置とアニメーションを設定 10 for var i:CGFloat = 0; i < needNumber; ++1 { 11 let sprite = SKSpriteNode(texture: texture) 12 sprite.zPosition = -100.0 13 sprite.position = CGPoint(x: i * sprite.size.width, y: self.frame.size.height / 2.0) 14 sprite.run(repeatForeverAnim) 15 baseNode.addchild(sprite) 16 }
このコードのfor文の箇所でC-style for statement has been removed in Swift 3

という表記が出てしまいます。エラーが発生する原因は、このようなfor文が今のバージョンでは廃止されているからだと思うのですが、どのように変えればいいかわかりません。わかる方がいれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

エラ〜メッセージの通り、C 言語風の for ループは廃止されたので、for 〜 in で書き換える必要があります。
参考: Swift3.0では使い慣れたfor文が使えなくなります - Qiita

swift

1let N = 5 2 3// for i: Int = 0; i < N; i++ { ... } の場合 4for i in 0..<N { // ..< は N を含まない 5 print(i) 6} 7// 0, 1, 2, 3, 4 が表示される 8 9// for i: Int = 1; i <= N; i++ { ... } の場合 10for i in 1...N { // ... は N を含む 11 print(i) 12} 13// 1, 2, 3, 4, 5 が表示される

N が整数の場合はこれだけですが、needNumber は CGFloat なので、整数に変換してループした上で、i を使う時も CGFloat に変換してください。

swift

1 for i in 0..<Int(needNumber) { 2 // 略 3 sprite.position = CGPoint(x: CGFloat(i) * sprite.size.width, y: self.frame.size.height / 2.0) 4 // 略 5 }

投稿2020/03/30 20:31

編集2020/03/30 20:34
hoshi-takanori

総合スコア7893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問