Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Swift SpriteKit i Button


  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 Zeloslaw

Zeloslaw
  • 4 postów

Napisano 03 lipca 2014 - 09:38

Hej,
dopiero zaczynam przygodę ze Swiftem. Chcę zrobić prostą grę w SpriteKit i Swift. Gra ma składać się z kilku scen, pierwsza scena to ma być menu główne z kilkoma przyciskami. Niestety przyciski typu:
let przycisk   = UIButton.buttonWithType(UIButtonType.System) as UIButton
        ...
self.view.addSubview(przycisk)
mogę dodawać tylko do widoku, a nie do mojej sceny i podczas zmiany sceny poleceniem:
let mojascena = GameScene(size: self.size)
self.scene.view.presentScene(mojascena, transition: transition)
przyciski są nadal widoczne.
Czy jest na to jakiś sposób? Czy można stworzyć przycisk, który będę mógł umieścić na scenie poleceniem:
self.addChild(...)
?
Proszę o pomoc.

#2 robgrab

robgrab
  • 1 384 postów
  • SkądWarszawa

Napisano 03 lipca 2014 - 16:02

Najlepiej zrobić kilka kontrolerów widoku, ew. Możesz usuwać i dodawać przyciski, ale to raczej mało praktyczne.

#3 Zeloslaw

Zeloslaw
  • 4 postów

Napisano 04 lipca 2014 - 09:00

Oczywiście mogę ukryć przyciski, ale wtedy tracę efekt przejścia sceny. To ma być mała gra i nie chcę jej robić na widokach tylko na SpriteKit i scenach. Z samą grą nie mam problemu, niestety nie wiem jak zrobić menu główne.

#4 wojtkow

wojtkow


  • 6 767 postów
  • Płeć:
  • SkądPoznań

Napisano 04 lipca 2014 - 11:30

Użyj SKSpriteNode zamiast UIButton, który nie nadaje się do użycia ze scenami SpriteKit. Poza tym powtórzę to co wszystkim, Swift nie jest wcale prostszy od objective-c, bo trudność nie leży w języku a jego frameworkach.

#5 Zeloslaw

Zeloslaw
  • 4 postów

Napisano 04 lipca 2014 - 15:58

Dzięki za pomoc.
Znalazłem przykład z takim buttonem w Obj-C
SKSpriteNode *fireNode = [SKSpriteNode spriteNodeWithImageNamed:@"fireButton.png"];
[self addChild: [self fireButtonNode]];

Jak to zapisać w swifcie? Czy jest możliwość podpięcia czcionki? Jak podłączyć click event ?

#6 wojtkow

wojtkow


  • 6 767 postów
  • Płeć:
  • SkądPoznań

Napisano 04 lipca 2014 - 16:29

SKSpriteNode nie ma zdarzenia "click", dziedziczy po UIResponder więc możesz podpiąć się pod jego zdarzenia, bądź badać zdarzenia SKScene (np. touchesBegan). Przykładzik (ze stackoverflow):

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    //if fire button touched, bring the rain
    if ([node.name isEqualToString:@"fireButtonNode"]) {
         //do whatever...
    }
}

Co do przeniesienia tego to Swift, to musisz nauczyć się przenosić kod między tymi językami. Swift na tą chwilę nie ma takiego wsparcia jak objective c, co więcej sam Swift z założeniach wymaga obj-c do niektórych bardziej złożonych zadań.

#7 Zeloslaw

Zeloslaw
  • 4 postów

Napisano 07 lipca 2014 - 11:17

Rzeczowe podejście do tematu znalazłem tu: [url=http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=9203]Ray Wenderlich | Tutorials for Developers and Gamers[/url]
Został tam postawiony problem małej gry ze scenami z wykorzystaniem elementów UIKit.
Poniżej dwa sposoby:
1. Napisanie gry tylko w SpriteKit - wszystkie buttony, scrole i wszelkie elementu UI trzeba pisać praktycznie od nowa i ręcznie - dla mnie ciężka sprawa.
2. Użycie single UIViewController gdzie bazowym widokiem jest SKView, wtedy używać mogę wszystkie elementy UIKit, które będą sterować załadowanymi scenami w SpriteKit.

Drugi pomysł wydaje się najlepszy, ale bez przykładu tak działającej aplikacji/gry nie mam pojęcia jak to zrobić i w dodatku w SWIFT. Gdyby ktoś natknął się na jakiś przykład kodu źródłowego to proszę o link. Będę wdzięczny.




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych