SpriteKit의 8 화면 변환 시도


spriteKit의 화면 전환은 매우 간단하다.
GameScene.swift

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        /* Called when a touch begins */

        for touch in (touches as! Set<UITouch>) {
            let nextScene = NextScene()
            nextScene.size = self.size
             let transition = SKTransition.crossFadeWithDuration(2)

            self.view?.presentScene(nextScene, transition: transition)

            }
    }

NextScene.swift

import Foundation
import SpriteKit

class NextScene: SKScene {
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        self.backgroundColor = UIColor.blueColor()


        let myLabel = SKLabelNode(fontNamed:"Chalkduster")
        myLabel.text = "Goodbye, World!";
        myLabel.fontSize = 65;
        myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));

        self.addChild(myLabel)
    }
}
이외에 화면 이동의 종류는 아래 페이지를 참고할 수 있다.소스는 Objective-C이지만 거의 달라진 게 없다고 생각해요.
[iOS7] Sprite Kit의 화면 마이그레이션 애니메이션 요약
다음은 SKTransition의 종류 중 하나이며 CIFilter의 샘플을 사용합니다.위의 링크에 샘플이 없기 때문입니다.

GameScene.swift

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        /* Called when a touch begins */

        for touch in (touches as! Set<UITouch>) {
            let nextScene = NextScene()
            nextScene.size = self.size
             let ciFilter:CIFilter = CIFilter(name: "CISwipeTransition")
            ciFilter.setDefaults()
            let transition = SKTransition(CIFilter: ciFilter, duration: 2)

            self.view?.presentScene(nextScene, transition: transition)

            }
    }

이 CIFilter를 사용하다가 걸려 넘어졌습니다. 주의하십시오.왜 걸려서 넘어졌는지.
CIFilter에 맞으면 뭐든지 쓸 수 있다는 건 아니에요.
당분간 그걸 눈치채지 못했기 때문이다.
예를 들어 CISEpiaTone을 사용하려고 했습니다.
    let ciFilter:CIFilter = CIFilter(name: "CISepiaTone")
    ciFilter.setValue(0.8, forKey: "inputIntensity")
그러나 이것은 컴파일 오류가 되지는 않지만 실행할 때 NSUnknownKeyException이 됩니다.구체적으로 말하면 이 오류가 발생할 것이다.
this class is not key value coding-compliant for the key inputTargetImage.'
당초 설정을 잊어버린 줄 알고 setValue를 추가했지만 전혀 해결되지 않았다.그래서다시 한 번 살펴보니 inputImage와 inputTargetImage만 매개 변수로 사용할 수 있을 것 같습니다.그 규칙에 따르면 CISepiaTone의 매개 변수는 inputImage와 inputIntensity만 있기 때문에 오류가 발생하는 것은 당연한 것이다.
즉, inputImage, inputTargetImage만 매개 변수로 SKTransition의CIFilter에 설정할 수 있다.
그러면 어떤 필터가 가능한지 참고하세요.단, 매개 변수 조건이 충족되더라도 iOS에서는 사용할 수 없는 것들이 많으니 주의해 주십시오.
또 필터의 종류에 따라 추가 파라미터 설정이 필요할 수도 있다.다 시도하지 않아서 잘 모르겠어요.
참고 자료

좋은 웹페이지 즐겨찾기