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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

305閲覧

Use of unresolved identifier 'self'

ai_123

総合スコア25

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2019/03/06 01:45

前提・実現したいこと

swiftでiphoneアプリ開発の勉強をしているんですが、下記のエラーが出て困っています。

発生している問題・エラーメッセージ

Use of unresolved identifier 'self' Use of unresolved identifier 'addChild' Use of unresolved identifier 'frame'

該当のソースコード

swift

1import SpriteKit 2import GameplayKit 3import CoreMotion 4 5 6class GameScene: SKScene { 7 8 let motionManager = CMMotionManager() 9 var accelaration: CGFloat = 0.0 10 11 var earth: SKSpriteNode! 12 var spaceship: SKSpriteNode! 13 14 override func didMove(to view: SKView) { 15 self.earth = SKSpriteNode(imageNamed: "earth") 16 self.earth.xScale = 1.5 17 self.earth.yScale = 0.3 18 self.earth.position = CGPoint(x: 0, y: -frame.height / 2) 19 self.earth.zPosition = -1.0 20 addChild(self.earth) 21 22 self.spaceship = SKSpriteNode(imageNamed: "spaceship") 23 self.spaceship.scale(to: CGSize(width: frame.width / 5, height: frame.width / 5)) 24 self.spaceship.position = CGPoint(x: 0, y: self.earth.frame.maxY + 50) 25 addChild(self.spaceship) 26 27 motionManager.accelerometerUpdateInterval = 0.2 28 motionManager.startAccelerometerUpdates(to: OperationQueue.current!) { (data, _) in 29 guard let data = data else { return } 30 let a = data.acceleration 31 self.accelaration = CGFloat(a.x) * 0.75 + self.accelaration * 0.25 32 } 33 } 34 35 override func didSimulatePhysics() { 36 let nextPosition = self.spaceship.position.x + self.accelaration * 50 37 if nextPosition > frame.width / 2 - 30 { return } 38 if nextPosition < -frame.width / 2 + 30 { return } 39 self.spaceship.position.x = nextPosition 40 } 41 } 42 43 func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 44 let missile = SKSpriteNode(imageNamed: "missile") 45 missile.position = CGPoint(x: self.spaceship.position.x, y: self.spaceship.position.y + 50) //Use of unresolved identifier 'self' エラーメッセージ 46 addChild(missile) // Use of unresolved identifier 'addChild' エラーメッセージ 47 48 let moveToTop = SKAction.moveTo(y: frame.height + 10, duration: 0.3) // Use of unresolved identifier 'frame' エラーメッセージ 49 let remove = SKAction.removeFromParent() 50 missile.run(SKAction.sequence([moveToTop, remove])) 51} 52

試したこと

let addChild = SKSpriteNode(imageNamed: "missile")
とりあえず変数として定義したほうが良いのかと思って、上記のように書いてみましたが、新たなエラーが出てしまいダメでした。
self.はviewcontrollerの中のクラスを参照したい時
frame、addchildは何か分かってません。

教えていただけたら幸いです。

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

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

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

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

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

y_waiwai

2019/03/06 02:19

そのエラーはどの行で発生してますか?
ai_123

2019/03/06 16:04

52,53,55行で発生しています。 missile.position = CGPoint(x: self.spaceship.position.x, y: self.spaceship.position.y + 50) addChild(missile) let moveToTop = SKAction.moveTo(y: frame.height + 10, duration: 0.3)
guest

回答1

0

ベストアンサー

swift

1touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 2 : 3}

がクラスの外に出ています。

インデントちゃんとしましょう。

投稿2019/03/06 02:22

fuzzball

総合スコア16731

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

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

ai_123

2019/03/06 17:33

fuzzball様 ご教授ありがとうございます。 クラスの中に突っ込んで以下のようにしたところ、警告1、エラー2残りました。 【警告】 'GLKTextureLoaderErrorDomain' was deprecated in iOS 12.0: OpenGLES API deprecated. (Define GLES_SILENCE_DEPRECATION to silence these warnings) 【エラー】 ・Use of unresolved identifier 'self' ・Use of unresolved identifier 'self' <コード> override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { let missile = SKSpriteNode(imageNamed: "missile") missile.position = CGPoint(x: self.spaceship.position.x, y: self.spaceship.position.y + 50) // Use of unresolved identifier 'self' エラーメッセージ addChild(missile) let moveToTop = SKAction.moveTo(y: frame.height + 10, duration: 0.3) // Use of unresolved identifier 'frame' エラーメッセージ これ何なんでしょうか?.selfとframeって変数でも定数でもなく場所を指定してると思っていたのですが、、定義も何もないと思うのですが。困り果ててます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問