2017-04-06 21 views
7

Tôi biết cách chụp và lưu ảnh chụp màn hình vào thư viện ảnh. Tôi làm điều này bằng cách sử dụng mã dưới đây. Tôi muốn thay thế hình ảnh nút cấp cảnh của mình bằng ảnh chụp màn hình của gameScene của tôi. Nói rằng các nút hình ảnh của tôi là 150x150. Làm thế nào tôi có thể đạt được điều này?Làm cách nào để thay thế hình ảnh nút cấp bằng ảnh chụp màn hình cảnh trò chơi cấp độ?

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) 

} 

Trả lời

3

Như UIGraphicsGetImageFromCurrentImageContext trả về một UIImage, và SKTexture có initiaser mà phải mất một UIImage, và SKSpriteNode (mà tôi giả sử bạn đang sử dụng cho nút của bạn) có một initialiser mà phải mất một SKTextureCGSize, tôi nghĩ bạn có mọi thứ bạn cần:

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

Bằng cách này, bạn sẽ không cần phải lưu ảnh chụp màn hình vào album ảnh (trừ khi bạn muốn vì các lý do khác).

+0

Tất nhiên, nếu bạn muốn xây dựng một bộ sưu tập các nút, thì chỉ cần lưu các họa tiết khác nhau vào một mảng. –

+0

'ảnh chụp màn hình' là tùy chọn – 0x141E

Các vấn đề liên quan