• 締切済み

swiftのsprite kitで質問です(1)

当方、swift初心者です。 sprite kitで野球のアプリを作っています。 バッターが打った打球の軌跡をSKShapeNodeを使って、 ゴロ  → 直線 ライナー→ ゆるい曲線 フライ → 強い曲線 を表示したいと思っています。 下記は、一番最初にボールを画面の中心に表示しておき、 打球の到達地点をタップするとそこにボールが移動 打球種のUISegmentedControlをタップすると、直線・ゆるい曲線・強い曲線を表示 結果のUISegmentedControlをタップすると、その軌跡の色が、赤・緑・黄に変わる というものです。 結果のUISegmentedControlは出来上がったのですが、打球種のUISegmentedControlが表示できません。 どなたか詳しい方がいらっしゃれば、ご教授いただけないでしょうか? import SpriteKit class GameScene: SKScene { var myImage : SKSpriteNode! override func didMoveToView(view: SKView) { //背景画像 let backGround = SKSpriteNode(imageNamed:"stadium414736.png") let Label = SKLabelNode(text: "\(self.size)") Label.position = CGPointMake(self.size.width/2.0,self.size.height/2.0) backGround.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)) backGround.size = self.size backGround.zPosition = -CGFloat.infinity self.addChild(backGround) self.backgroundColor = UIColor.blueColor() myImage = SKSpriteNode(imageNamed:"ball04.png") myImage.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); self.addChild(myImage) // ラベル 打球種 let dakyuushu = SKLabelNode(fontNamed:"Chalkduster") dakyuushu.text = "打球種" dakyuushu.fontSize = 15 dakyuushu.position = CGPoint(x:(size.width / 10.0) * 1 , y:(size.height / 35) * 11.1) dakyuushu.fontColor = UIColor.whiteColor() self.addChild(dakyuushu) //選択肢 let myArray1: NSArray = [" ゴロ ", " ライナー ", " フライ " ] // SegmentedControlを作成する. let dakyuushu1: UISegmentedControl = UISegmentedControl(items: myArray1 as [AnyObject]) dakyuushu1.center = CGPoint(x:(size.width / 10.0) * 5.8 , y:(size.height / 35) * 23.5) dakyuushu1.tintColor = UIColor.yellowColor() dakyuushu1.addTarget(self, action: "segconChanged1:", forControlEvents: UIControlEvents.ValueChanged) self.view!.addSubview(dakyuushu1) // ラベル 結果 let kekka = SKLabelNode() kekka.text = "結果" kekka.fontSize = 15 kekka.position = CGPoint(x:(size.width / 10.0) * 1 , y:(size.height / 35) * 5.5) kekka.fontColor = UIColor.whiteColor() self.addChild(kekka) //選択肢 let myArray: NSArray = ["Out ", "1BH ", "2BH ", "3BH ","HR ", "ERR ", "Fc " ] // SegmentedControlを作成する. let kekka1: UISegmentedControl = UISegmentedControl(items: myArray as [AnyObject]) kekka1.center = CGPoint(x:(size.width / 10.0) * 5 , y:(size.height / 35) * 31) kekka1.tintColor = UIColor.yellowColor() kekka1.addTarget(self, action: "segconChanged:", forControlEvents: UIControlEvents.ValueChanged) self.view!.addSubview(kekka1) } 長文なので、続きます。

みんなの回答

回答No.1

SpriteKitは本格的に使ったことないんですが、新規のGameプロジェクト作成で 自動的に作られたサンプルコードに質問のコードをコピペして実行してみたら、 UISegmentedControlの表示位置が画面をはみ出しているだけのようだったので、 SKSceneのサイズを調整したらちゃんと表示されました。 http://d.hatena.ne.jp/yasuhallabo/20140615/1402840178 に書かれているように、SKScene作成処理で scene.size = skView.frame.size; を追加して画面サイズにSKSceneのサイズを合わせるとよいと思います。

関連するQ&A

専門家に質問してみよう