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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

Q&A

解決済

2回答

2889閲覧

swiftでアナログ時計を作ってみたのですが、simulatorで表示されない。

ShintaroOKUMURA

総合スコア21

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2016/12/23 15:50

編集2016/12/23 16:19

引用テキスト
###前提・実現したいこと
アナログ時計を作成し、時計を表示させたいです

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

実行は問題なくできるんですが、Simulatorで動かしてみると何も映りません。 どこか問題があればご指摘お願いいたします。

###該当のソースコード

swift

1import SpriteKIt 2 class GameScene: SKScene { 3 let sHand=SKSpriteNode(color: UIColor.black, size: CGSize(width: 2, height: 180)); 4 let mHand=SKSpriteNode(color: UIColor.black, size: CGSize(width: 5, height: 180)); 5 let hHand=SKSpriteNode(color: UIColor.black, size: CGSize(width: 5, height: 140)); 6 7 var last:CFTimeInterval!; 8 var lastM:CFTimeInterval!; 9 var lastH:CFTimeInterval!; 10 var myDate:NSDate!; 11 var myComponetns:NSDateComponents!; 12 var myCalendar: NSCalendar!; 13 var _sec:Double!; 14 var _min:Double!; 15 var _hour:Double!; 16 17 func DegreeToRadian(Degree:Double)->CGFloat{ 18 return CGFloat(Degree)/CGFloat(180.0*M_1_PI) 19 } 20 21 override func didMove(to view: SKView) { 22 /* Setup your scene here */ 23 24 myDate = NSDate(); 25 //カレンダーを取得. 26 myCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)! 27 28 //取得するコンポーネントを決める. 29 // myComponetns = myCalendar.component(<#T##unit: NSCalendar.Unit##NSCalendar.Unit#>, from: <#T##Date#>) 30 31 /* myComponetns = myCalendar.components( 32 NSCalendar.Unit.hour, 33 NSCalendar.Unit.minute, 34 NSCalendar.Unit.second, 35 from: myDate ) 36 */ 37 myComponetns = myCalendar.components( 38 [ 39 // NSCalendar.Unit.year, 40 // NSCalendar.Unit.month, 41 // NSCalendar.Unit.day, 42 NSCalendar.Unit.hour, 43 NSCalendar.Unit.minute, 44 NSCalendar.Unit.second, 45 // NSCalendar.Unit.weekday 46 ],from: myDate as Date) as NSDateComponents! 47 _sec=Double(myComponetns.second * -6 ); 48 _min=Double(myComponetns.minute * -6); 49 _hour=Double((myComponetns.hour-12) * -30); 50 51 //盤面 52 // ShapeNodeを作成. 53 let Circle = SKShapeNode(circleOfRadius: 190) 54 55 // ShapeNodeの座標を指定. 56 Circle.position = CGPoint(x:self.frame.midX, y:self.frame.midY) 57 58 // ShapeNodeの塗りつぶしの色を指定. 59 Circle.fillColor = UIColor.white 60 Circle.zPosition=CGFloat(-2.0) 61 // sceneにShapeNodeを追加. 62 self.addChild(Circle) 63 var cArr:[SKShapeNode]=[]; 64 for i in 1...60 { 65 66 let memori=SKSpriteNode(color: UIColor.gray, size: CGSize(width: 1, height: 14)); 67 // ShapeNodeの座標を指定. 68 memori.position = CGPoint(x:self.frame.midX, y:self.frame.midY) 69 70 memori.position=CGPoint(x:self.frame.midX, y:self.frame.midY) 71 memori.zPosition=CGFloat(2.0) 72 memori.anchorPoint = CGPoint(x: 0.5, y: -12); 73 74 memori.zRotation = DegreeToRadian(Degree: Double(-6 * i)) 75 //cArr.append(Circle2); 76 self.addChild(memori) 77 78 } 79 80 for i in 1...12 { 81 82 let memori=SKSpriteNode(color: UIColor.black, size: CGSize(width: 5, height: 14)); 83 // ShapeNodeの座標を指定. 84 memori.position = CGPoint(x:self.frame.midX, y:self.frame.midY) 85 86 memori.position=CGPoint(x:self.frame.midX, y:self.frame.midY) 87 memori.zPosition=CGFloat(2.0) 88 memori.anchorPoint = CGPoint(x: 0.5, y: -12); 89 90 memori.zRotation = DegreeToRadian(Degree: Double(-30 * i)) 91 //cArr.append(Circle2); 92 self.addChild(memori) 93 94 } 95 96 //四角形の描画 97 //秒 98 sHand.position = CGPoint(x:self.frame.midX, y:self.frame.midY); 99 sHand.anchorPoint = CGPoint(x: 0.5, y: 0); 100 sHand.zRotation=DegreeToRadian(Degree: _sec); 101 self.addChild(sHand) 102 103 //分 104 mHand.position = CGPoint(x:self.frame.midX, y:self.frame.midY); 105 mHand.anchorPoint = CGPoint(x: 0.5, y: 0); 106 mHand.zRotation=DegreeToRadian(Degree: _min+(6*(_sec/360))); 107 print(_min+(6*(_sec/360))) 108 self.addChild(mHand) 109 110 //時 111 hHand.position = CGPoint(x:self.frame.midX, y:self.frame.midY); 112 hHand.anchorPoint = CGPoint(x: 0.5, y: 0); 113 hHand.zRotation = DegreeToRadian(Degree: _hour + (30*(_min/360))); 114 print(_hour) 115 self.addChild(hHand) 116 117 } 118 119 func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent) { 120 /* Called when a touch begins */ 121 } 122 123 override func update(_ currentTime: CFTimeInterval) { 124 /* Called before each frame is rendered */ 125 myDate = NSDate(); 126 /* 127 myComponetns = myCalendar.component( 128 NSCalendar.Unit.CalendarUnitHour | 129 NSCalendar.Unit.CalendarUnitMinute , 130 NSCalendar.Unit.CalendarUnitSecond , 131 fromDate: myDate) 132 */ 133 myComponetns = myCalendar.components( 134 [ 135 // NSCalendar.Unit.year, 136 // NSCalendar.Unit.month, 137 // NSCalendar.Unit.day, 138 NSCalendar.Unit.hour, 139 NSCalendar.Unit.minute, 140 NSCalendar.Unit.second, 141 // NSCalendar.Unit.weekday 142 ],from: myDate as Date) as NSDateComponents! 143 _sec=Double(myComponetns.second * -6 ); 144 _min=Double(myComponetns.minute * -6); 145 _hour=Double((myComponetns.hour-12) * -30); 146 147 sHand.zRotation=DegreeToRadian(Degree: _sec) 148 mHand.zRotation=DegreeToRadian(Degree: _min+(6*(_sec/360))) 149 hHand.zRotation=DegreeToRadian(Degree: _hour + (30*(_min/360))); 150 151 } 152 } 153

###試したこと
背景色の変更

###補足情報(言語/FW/ツール等のバージョンなど)
swift 3.0

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

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

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

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

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

guest

回答2

0

解決していたら無視してください
Xcode Version 8.2.1、Simulator Version 10.0を使用している場合で解説いたします、Xcodeで File → New → projectでGameを選択してお好みのProduct NameでLanguageはswift、Game TechnologyはSpriteKitを選択して作成します、作成されたGameScene.swiftを書き換えてください、これで私の環境ではSimulatorで時計とHello Worldが表示します
また、ご存知と思いますがGameScene.swiftのclass GameScene名をGameSecne1とかに変更したらGameScene.sksのCustom Class名も同様にGameSecne1に変更すれば時計は表示します、また、GameScene.sksのScene Colarを変更すれば背景色が変化します、参考になれば幸いです

import SpriteKit import GameplayKit class GameScene: SKScene { let sHand = SKSpriteNode(color: UIColor.red, size: CGSize(width: 2, height: 180)) let mHand = SKSpriteNode(color: UIColor.black, size: CGSize(width: 5, height: 180)) let hHand = SKSpriteNode(color: UIColor.black, size: CGSize(width: 5, height: 140)) //var last: CFTimeInterval! //var lastM: CFTimeInterval! //var lastH: CFTimeInterval! var myDate: NSDate! var myComponetns: NSDateComponents! var myCalendar: NSCalendar! var sec: Double! var min: Double! var hour: Double! func DegreeToRadian(Degree:Double) -> CGFloat { return CGFloat(Degree) / CGFloat(180.0 * M_1_PI) } override func didMove(to view: SKView) { myDate = NSDate() //カレンダーを取得. myCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)! //取得するコンポーネントを決める. myComponetns = myCalendar.components([.hour, .minute, .second], from: myDate as Date) as NSDateComponents! sec = Double(myComponetns.second * -6 ) min = Double(myComponetns.minute * -6) hour = Double((myComponetns.hour-12) * -30) //盤面 // ShapeNodeを作成. let Circle = SKShapeNode(circleOfRadius: 190) // ShapeNodeの座標を指定. Circle.position = CGPoint(x: frame.midX, y: frame.midY) // ShapeNodeの塗りつぶしの色を指定. Circle.fillColor = UIColor.white Circle.zPosition = CGFloat(-2.0) // sceneにShapeNodeを追加. self.addChild(Circle) //var cArr: [SKShapeNode] = [] for i in 1...60 { let memori=SKSpriteNode(color: UIColor.gray, size: CGSize(width: 1, height: 14)) // ShapeNodeの座標を指定. memori.position = CGPoint(x: self.frame.midX, y: self.frame.midY) memori.zPosition = CGFloat(2.0) memori.anchorPoint = CGPoint(x: 0.5, y: -12) memori.zRotation = DegreeToRadian(Degree: Double(-6 * i)) //cArr.append(Circle2) addChild(memori) } for i in 1...12 { let memori = SKSpriteNode(color: UIColor.black, size: CGSize(width: 5, height: 14)) // ShapeNodeの座標を指定. memori.position = CGPoint(x: frame.midX, y: frame.midY) memori.zPosition = CGFloat(2.0) memori.anchorPoint = CGPoint(x: 0.5, y: -12) memori.zRotation = DegreeToRadian(Degree: Double(-30 * i)) //cArr.append(Circle2) addChild(memori) } //四角形の描画 //秒 sHand.position = CGPoint(x: frame.midX, y: frame.midY) sHand.anchorPoint = CGPoint(x: 0.5, y: 0) sHand.zRotation = DegreeToRadian(Degree: sec) addChild(sHand) //分 mHand.position = CGPoint(x: frame.midX, y: frame.midY) mHand.anchorPoint = CGPoint(x: 0.5, y: 0) mHand.zRotation = DegreeToRadian(Degree: min+(6*(sec/360))) print(min + (6 * (sec / 360))) addChild(mHand) //時 hHand.position = CGPoint(x: frame.midX, y: frame.midY) hHand.anchorPoint = CGPoint(x: 0.5, y: 0) hHand.zRotation = DegreeToRadian(Degree: hour + (30 * (min / 360))) print(hour) addChild(hHand) } func touchDown(atPoint pos : CGPoint) { } func touchMoved(toPoint pos : CGPoint) { } func touchUp(atPoint pos : CGPoint) { } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { } override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { } override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { } override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) { } override func update(_ currentTime: TimeInterval) { // Called before each frame is rendered myDate = NSDate() myComponetns = myCalendar.components( [.hour, .minute, .second], from: myDate as Date) as NSDateComponents! sec = Double(myComponetns.second * -6 ) min = Double(myComponetns.minute * -6) hour = Double((myComponetns.hour-12) * -30) sHand.zRotation = DegreeToRadian(Degree: sec) mHand.zRotation = DegreeToRadian(Degree: min + (6 * (sec / 360))) hHand.zRotation = DegreeToRadian(Degree: hour + (30 * (min / 360))) } } コード

投稿2017/03/04 08:20

編集2017/03/04 08:56
papassan

総合スコア36

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

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

0

ベストアンサー

自分の環境だとシミュレータで実行できました。SpriteKItをSpriteKitに修正しましたが...
クリーンしてみたらどうでしょうか。

投稿2016/12/23 19:34

fromageblanc

総合スコア2724

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

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

ShintaroOKUMURA

2016/12/24 12:47

遅くなってしまい。申し訳ありません。そうでしたか!それではやはり自分のシュミレータがおかしいのですね。。 クリーンとは再インストールということでしょうか??
fromageblanc

2016/12/24 16:25

クリーンビルドです。shift + option + command + k
ShintaroOKUMURA

2016/12/25 17:25

クリーンビルドして、xcodeを再インストールでもダメでした。 原因としてはsimulatorが問題の確率の方が高いのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問