SpriteKit
SpriteKit Biblioteka do tworzenia gier wbudowana w SDK Wspiera grafikę 2D w oparciu o sprite y
SpriteKit HelloWorld
SpriteKit HelloWorld
SpriteKit AppDelegate identyczny jak w innych szablonach Korzysta z mechanizmu scen (poziomy/ekrany) scena ma swoją klasę GameScene.swift i plik z projektem GameScene.sks kontroler klasy widoku ładujący scenę GameViewController.swift scenorys z projektem UI sprite znajduje się w Images.xcassets
SpriteKit - scenorys
SpriteKit - kontroler widoku
SpriteKit - kontroler widoku
SpriteKit - scena
Przerabiamy szablon Zmieniamy orientację ekranu na poziomą Wyrzucamy projekt sceny GameScene.sks Zmieniamy GameViewController.swift
Kontroler widoku
Sprite Dodajemy zasoby do projektu Edytujemy GameScene.swift Pokazujemy na ekranie naszego bohatera
Efekt
Dodajemy przeciwników Dodajemy metody do GameScene.swift
Dodajemy przeciwników Modyfikujemy metodę didmovetoview
Efekt
Strzelanie nasz bohater będzie strzelał w kierunku miejsca, w które stuknie gracz potrzebujemy do tego trochę matematyki SpriteKit niestety nie udostępnia funkcji operujących na wektorach i macierzach
Operatory wektorowe Dodajemy je przed klasą GameScene
Dotyk Dodajemy obsługę dotyku w klasie GameScene
Efekt
Wykrywanie kolizji SpriteKit zawiera obsługę fizyki, która znacząco ułatwi wykrywanie kolizji sprite y mogą należeć do jednej z 32 kategorii zdefiniujemy sobie strukturę
Wykrywanie kolizji nasz klasa będzie informowana o zdarzeniach fizycznych, gdy będzie realizować protokół SKPhysicsContactDelegate w metodzie didmovetoview dodajemy
Wykrywanie kolizji w metodzie addmonster dopisujemy kod po utworzeniu potwora 1.przypisujemy potworowi jego pole 2.potwór będzie poruszany przez nas, a nie przez fizykę 3.ustawiamy kategorię sprite a 4.ustawiamy kategorię sprite ów, dla których ma być wykrywana kolizja 5.tu by można ustawić np. odbijanie się obiektów
Wykrywanie kolizji Podobny kod dopisujemy w touchesended dla pocisków Dodajemy metodę obsługującą kolizję
Wykrywanie kolizji Dodajemy metodę wymaganą przez protokół
Efekt
Dźwięk SpriteKit nie ma dedykowanego mechanizmu do obsługi dźwięku Dźwięk można odtwarzać korzystając z normalnego API
Dźwięk Przed klasą GameScene dodajemy kod
Dźwięk Na początku metody didmovetoview dodajemy a na początku touchesended to
Efekt
Ekran GameOver Dodajemy nowy plik swift GameOverScene.swift Edytujemy kod
Warunek końca Gdy potwór nas ominie przegrywamy Zamieniamy ostatnią linię w metodzie addmonster na
Efekt
Wygrana Wygrywamy, gdy zabijemy 30 potworów Dodajemy pole w klasie GameScen modyfikujemy metodę didcolidewithmonster
Efekt
SceneKit
SceneKit podobna biblioteka do SpriteKit tyle, że do grafiki 3D
SceneKit Scenorys - obiekt GameViewController
SceneKit
SceneKit - kontroler widoku
SceneKit - kontroler widoku
SceneKit - kontroler widoku
Przykładowa aplikacja
Przykładowa aplikacja program do wizualizacji cząsteczek w 3D
Scenorys Na widok składa się etykietka, pole wyboru i SceneKit View
SceneKit operuje na hierarchicznej strukturze węzłów każda transformacja dotyczy węzła i jego dzieci
Przykładowa aplikacja Początkowy ViewController
Tworzenie sceny dodajemy metodę do klasy kontrolera i wywołujemy ją w viewdidappear
Dodamy oświetlenie
Gdy dodamy jeszcze
Dodamy dodatkowe oświetlenie
Ustawiamy kamerę
Ręczne sterowanie kamerą Usuwamy sterowanie automatyczne Dodajemy 2 pola w klasie kontrolera Dodajemy nową metodę
Ręczne sterowanie kamerą Dopisujemy kod do tworzenia sceny
Tworzymy atomy Tworzymy nową klasę Atoms.swift
Tworzymy atomy i kolejne atomy
Tworzymy atomy dodajemy kolejną metodę
Kontroler widoku usuwamy pudełko dodajemy tworzenie atomów
Tworzymy cząsteczki Dodajemy klasę Molecules.swift Dopisujemy metody tworzące cząsteczki
Tworzymy cząsteczki Dopisujemy akcję reagująca na zmianę cząsteczki
Tworzymy cząsteczki W Molecules dodajemy metodę pomocniczą I tworzymy prawdziwy metan CH4
SpriteKit i SceneKit wg strony http://www.raywenderlich.com
Inne technologie OpenGL Metal
Multitasking
Multitasking Do wersji ios 4 był ograniczony do aplikacji systemowych Aplikacja może znajdować się w jednym ze stanów: Na wierzchu - aktualnie wyświetlana aktywna nieaktywna W tle Zawieszona
Czas życia aplikacji Uruchomienie - wywoływana jest metoda didfinishlaunchingwithoptions W momencie uzyskania ekranu wywoływana jest metoda applicationdidbecomeactive Jeżeli aplikacja od razu trafia do tła wywoływana jest metoda applicationdidenterbackground
Czas życia aplikacji Aplikacja ma 5 sekund na zakończenie metody Może zyskać więcej czasu wywołując metodę beginbackgroundtaskwithexpiration i endbackgroundtask
Czas życia aplikacji Gdy aplikacja ma wyjść z tła wywoływana jest metoda applicationwillenterforeground a potem applicationdidbecomeactive Gdy aplikacja ma być zakończona wywoływana jest metoda applicationwillterminate
Czas życia aplikacji Wszystkie aplikacje tworzone w Xcode 4 są domyślnie aplikacjami działającymi w tle Można to zmienić poprzez ustawienia aplikacji poprzez edycję pliku Info.plist
Multitasking Jest dostępny od iphone a 3GS i ios 4. W innym wypadku aplikacje kończą działanie Można sprawdzić w kodzie, czy multitasking jest dostępny
Powiadomienia Aplikacja w tle nie ma dostępu do ekranu Jedyny mechanizm to lokalne powiadomienia Lokalne w przeciwieństwie do zdalnych - serwerowych
Przykład Nowy projekt typu SingleView Powiadomienie ma być wyświetlone 10 s po przejściu w tło Dodajemy plik dźwiękowy Modyfikujemy metodę applicationdidenterbackground
Core Data
CoreData Biblioteka umożliwiająca abstrakcję źródła danych Baza danych jest ukryta za obiektem ManagedObjectContext Dane fizycznie przechowywane w pliku SQLite
Core Data Tworzymy projekt typu Empty Application
Utworzony projekt
Model danych Edytujemy CoreData.xcdatamodeld
Model danych Dodajemy nowe Entity Zmieniamy mu nazwę na Contacts Dodajemy atrybuty typu String: name phone address
Tworzymy widok Dodajemy Storyboard File\New File
Tworzymy widok W opcjach projektu ustawiamy Main Interface na nasz Storyboard W CoreDataAppDelegate edytujemy treść metody didfinishlaunchingwithoptions
Tworzymy widok Dodajemy kontroler widoku File\New File
Tworzymy widok Dziedziczymy po UIViewController
Tworzymy widok Dodajemy kontroler widoku do Storyboard
Tworzymy widok
Wykonujemy połączenia
Piszemy kod
Piszemy kod
Do zobaczenia