SpriteKit jest biblioteką do tworzenia grafiki i animacji 2D dla

Transkrypt

SpriteKit jest biblioteką do tworzenia grafiki i animacji 2D dla
SpriteKit jest biblioteką do tworzenia grafiki
i animacji 2D dla frameworka Cocoa.
W oknie programu umieszczany jest
obiekt klasy SKView,
w nim prezentowana jest scena.
Projekt może zawierać wiele scen,
odtwarzanych kolejno na żądanie.
Jest wbudowany cykl życia i pętla przetwarzania,
która pozwala na kolejne odtwarzanie
poszczególnych klatek sceny.
@IBOutlet weak var skView: SKView!
applicationDidFinishLaunching(aNotification: NSNotification) {
let scene = GameScene(size: self.window.frame.size)
skView.presentScene(scene)
}
Scena jest obiektem klasy SKScene. Podstawowe metody tej klasy pozwalają:
• didMoveToView - ustalić początkowy stan sceny oraz zmiennych globalnych w klasie,
• update - aktualizować ich wartości podczas odtwarzania kolejnych klatek sceny.
Scena jest zorganizowana w drzewo węzłów - obiektów klasy SKNode lub jej pochodnych.
Scena jest korzeniem tego drzewa, umieszczane na niej obiekty to są Child.
Węzły mogą także mieć swoich potomków, które będą dziedziczyć ich właściwości i metody.
Główne typy węzłów (klasy pochodne po SKNode):
SKSpriteNode - obraz wypełniony teksturą klasy SKTexture,
SKLabelNode - pole tekstowe,
SKShapeNode - figura geometryczna płaska (prostokąt, owal, inna zdefiniowana ścieżka)
Do węzłów można zastosować obiekt klasy SKAction, aby uzyskać efekt animacji, modyfikować scenę
lub realizować określone stany gry. Dla akcji typu: transformacja obiektu można podać czas jej trwania.
Najczęściej używane metody klasy SKAction:
moveTo(), moveByX(), moveByY() - przesunięcia
rotateByAngle() - obrót
scaleBy(), scaleTo() - zmiana rozmiarów
animateWithTextures() - zmiany obrazu
removeFromParent() - usunięcie obiektu ze sceny
playSoundFileNamed() - odtwarzanie dźwięku (plik dźwiękowy musi być w zasobach projektu)
Akcja może być sekwencją kilku akcji wykonywanych kolejno po sobie:
let a = SKAction.sequence([akcja1, akcja2])
Akcję można wykonać określoną liczbę razy, lub powtarzać bez końca:
let b = SKAction.repeatAction(akcja, count: 1)
let c = SKAction.repeatActionForever(akcja, timePerFrame: 0.06)
Przypisanie akcji do obiektu:
obiekt.runAction(akcja)
obiekt.runAction(akcja, withKey: "nazwa") - akcja z identyfikatorem, można później sprawdzać czy akcja o takiej nazwie jest aktualnie uruchomiona
AppDelegate.swift - w metodzie applicationDidFinishLaunching dodaj kolor sceny
scene.backgroundColor = NSColor.yellowColor()
GameScene.swift ———————————————————————————————
import SpriteKit
class GameScene: SKScene {
// http://soundcli.ps/browse/tweet?page=0 // wybór innych dżwięków
let glos = SKAction.playSoundFileNamed("tweet.mp3", waitForCompletion: false)
override func didMoveToView(view: SKView) {
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!";
myLabel.fontSize = 25;
myLabel.fontColor = NSColor.redColor()
myLabel.position = CGPoint(x: 0, y: -10);
// myLabel.zPosition = CGFloat(2)
let tlo = SKSpriteNode(color: NSColor.blueColor(), size: CGSizeMake(300,50))
tlo.position = CGPoint(x:self.frame.width/2, y: self.frame.height/2);
tlo.addChild(myLabel)
// self.addChild(myLabel)
self.addChild(tlo)
let ys = self.frame.height/2
let lewa = CGPoint(x:0, y: ys)
let prawa = CGPoint(x:self.frame.width, y: ys)
}
let wlewo = SKAction.moveTo(lewa, duration: 2)
let wprawo = SKAction.moveTo(prawa, duration: 2)
let kiwaj = SKAction.sequence([wprawo,wlewo])
tlo.runAction(SKAction.repeatActionForever(kiwaj))
override func mouseDown(theEvent: NSEvent) {
runAction(glos)
let location = theEvent.locationInNode(self)
let sprite = SKSpriteNode(imageNamed:"twitter-bird")
sprite.position = location;
//sprite.setScale(0.5)
let anim = SKAction.scaleTo(0.05, duration: 5.0)
let won = SKAction.removeFromParent()
sprite.runAction(SKAction.sequence([anim,won]))
let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)
sprite.runAction(SKAction.repeatActionForever(action))
}
}
self.addChild(sprite)
override func update(currentTime: CFTimeInterval) { }
Zasoby projektu: tweet.mp3, twitter-bird.png

Podobne dokumenty