SpriteKitのノードをボタンにしてカメラを使いたい
初めまして。プログラミング初心者です。
SpriteKitで"cbutton"と名付けたノードをタップするとカメラが起動して写真を撮影し、撮影した写真をカメラロールに保存して元の画面(GameScene)に戻る、という処理をしたいのですがうまくいきません。
import UIKit
import SpriteKit
class GameScene: SKScene, UIImagePickerControllerDelegate {
override func didMoveToView(view: SKView) {
//背景画像、ボタンのスプライトを配置
let background = SKSpriteNode(imageNamed: "haikei")
background.position = CGPoint(x: self.size.width * 0.5,y: self.size.height * 0.5)
addChild(background)
let cbutton = SKSpriteNode(imageNamed: "cbutton")
cbutton.position = CGPoint(x: self.size.width * 0.25, y: 100)
cbutton.name = "cbutton"
addChild(cbutton)
}
// cbuttonのタッチイベント作成
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if self.nodeAtPoint(location).name == "cbutton" {
// カメラ起動
let camera = UIImagePickerControllerSourceType.Camera
if UIImagePickerController.isSourceTypeAvailable(camera){
let picker = UIImagePickerController()
picker.sourceType = camera
picker.delegate = self
self.presentViewController(picker, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]){
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
let gameScene = GameScene(size: size)
let skView = view as SKView!
gameScene.scaleMode = SKSceneScaleMode.AspectFit
skView.presentScene(gameScene)
}
}
}
}
下から14行目の
self.presentViewController(picker, animated: true, completion: nil)
で、"Value of type 'GameScene' has no member 'presentViewController'"とエラーが起こってしまいます。
ViewControllerは以下のようになっています。
import UIKit
import SpriteKit
class ViewController: UIViewController, UIImagePickerControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as! SKView
// SKGameSceneを生成
let scene = GameScene(size:CGSize(width: 375, height: 667))
scene.scaleMode = SKSceneScaleMode.AspectFit
// SKView に SKScene を設定して表示させる
skView.presentScene(scene) }
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
*バージョンはXcode7.2, Swift2.1です。