2017-04-06 60 views
7

Bir ekran görüntüsünü fotoğraf kitaplığına nasıl alıp kaydedeceğimi biliyorum. Bunu aşağıdaki kodu kullanarak yapıyorum. Seviye sahnesi düğmesi resimlerimi gameScene ekran görüntüleri ile değiştirmek istiyorum. Resim düğmelerimin 150x150 olduğunu söyle. Bunu nasıl başarabilirim? UIGraphicsGetImageFromCurrentImageContext gibiSeviye oyun görüntüsünün seviye oyun görüntüsünün ekran görüntüsüyle nasıl değiştirebilirim?

func takeScreenShot(scene:SKScene) { 
    let bounds = self.scene!.view?.bounds 
    UIGraphicsBeginImageContextWithOptions(/*CGRect(x: 0, y: 0, width: 100, height: 100).size*/bounds!.size, true, UIScreen.main.scale) 
    self.scene?.view?.drawHierarchy(in: bounds!, afterScreenUpdates: true) 
    let screenshot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    UIImageWriteToSavedPhotosAlbum(screenshot!, nil, nil, nil) 

} 


class LevelSelectScene: SKScene { 

let button1: SKSpriteNode = SKSpriteNode(imageNamed: "image1") 
let button2: SKSpriteNode = SKSpriteNode(imageNamed: "image2") 
let button3: SKSpriteNode = SKSpriteNode(imageNamed: "image3") 

        ... 

override init(size: CGSize){ 
super.init(size: size) 

button1.position = CGPoint(x: self.frame.width/4, y: self.frame.height/2) 
self.addChild(button1) 

button2.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
self.addChild(button2) 

button3.position = CGPoint(x: 3*self.frame.width/4, y: self.frame.height/2) 
self.addChild(button3) 

} 

cevap

3

bir UIImage döndürür ve SKTexture bir SKTexture ve CGSize alır Başlatıcı bir sahiptir (ben size düğme için kullandığınız varsayılmaktadır) bir UIImage ve SKSpriteNode alan bir initiaser vardır, bence sen ihtiyacınız olan her şey var:

if let screenshot = UIGraphicsGetImageFromCurrentImageContext() { 
    let screenShotTexture = SKTexture(image: screenshot) 
    let button = SKSpriteNode(texture: screenShotTexture, size: CGSize(width: 150, height: 150)) 
} 

bu kullanarak, (başka nedenlerle istediği sürece) fotoğraf albümü kaydetmek ekran gerek olmazdı.

+0

Elbette, bir düğme koleksiyonu oluşturmak istiyorsanız, çeşitli dokuları bir diziye kaydedin. –

+0

'ekran görüntüsü 'isteğe bağlıdır – 0x141E