私は自分に線を引き込もうとしていますSKScene
が、それをうまく描くことができますが、その線を前にしたいのですが、次のAVCapturePreviewLayer
ようなものが得られます:
cameraPreviewLayer の上のすべての行が必要です。
これは私のコードです:
import SpriteKit
import UIKit
import AVFoundation
class GameScene: SKScene {
let captureSession = AVCaptureSession()
var shapeCross:SKShapeNode!
var error: NSError?
override func didMoveToView(view: SKView) {
let devices = AVCaptureDevice.devices().filter{ $0.hasMediaType(AVMediaTypeVideo) && $0.position == AVCaptureDevicePosition.Back }
if let captureDevice = devices.first as? AVCaptureDevice {
captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &error))
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
captureSession.startRunning()
if let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) {
previewLayer.bounds = CGRectMake(0.0, 0.0, 100, 100)
previewLayer.position = CGPointMake(view.bounds.midX, view.bounds.midY)
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
previewLayer.opacity = 1
view.scene?.backgroundColor = UIColor.clearColor()
view.layer.addSublayer(previewLayer)
}
}
let bezierPath = UIBezierPath(rect: CGRect(x: 0, y: view.scene!.frame.midY, width: view.scene!.frame.width, height: 1))
bezierPath.appendPath( UIBezierPath(rect: CGRect(x: view.scene!.frame.midX, y: 0, width: 1, height: view.scene!.frame.height)) )
shapeCross = SKShapeNode(path: bezierPath.CGPath)
shapeCross.strokeColor = UIColor.whiteColor()
self.addChild(shapeCross)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
}
override func update(currentTime: CFTimeInterval) {
}
}
私はこのようなことをしたいので、私のpreviewLayer
後ろに私の後ろSKScene
が欲しいです:
view.scene?.backgroundColor = UIColor.clearColor()
だから私も見ることpreviewLayer
ができ、私の線も見ることができます。
ビューの zPosition を設定しようとしましたが、うまくいきません。
これは私のサンプルプロジェクトです。