Pagine    Articoli    Prodotti    Forum    Cerca  
Nickname

Password


Non sei registrato?
Registrati a GPI qui!

Puoi anche attivare un vecchio utente GPI e chiedere una nuova password.
I Team

Mappa Team
I nostri utenti

Mappa Utenti
  Programmare un videogame Flash con Starling #8
Pubblicato da Andrea Venturi il 2013-04-10 19:47:42

“sciacquafresh!”

 

In questo tutorial vediamo come creare uno “Splash screen”.

 

Momento Teoria

Lo splash screen è l’immagine che compare mentre si carica il vostro gioco o applicazione.

Quindi si dovrà caricare un’immagine e visualizzarla come prima cosa, soprattutto deve scomparire quando il gioco o applicazione è pronta.

 

Quindi prima di tutto creiamo l’immagine che vogliamo e posizioniamola in media/graphics e rinominatela SPLASH.png

 

Mano al codice

Apriamo il file Main.as, e subito sotto la firma della classe andiamo ad aggiungere la nostra risorsa

[Embed(source = "../media/graphics/SPLASH.png")]
public static const splashScreen:Class;

di seguito aggiungiamo altre due variabili di supporto

private var splashS:Bitmap;
private var tim:int;

ora dato che useremo una Bitmap andiamo ad includere

import flash.display.Bitmap;

a questo punto dobbiamo buttare su schermo lo splash screen, quindi nel costruttore andiamo a scrivere

splashS = new splashScreen();
addChild(splashS);

 prima della chiamata della funzione init();

 

Nella funzione init invece andiamo a togliere

_starling.start();

perchè non vogliamo che starling parta mentre c’è lo splash screen, però vogliamo che questo splash screen si elimini quando il framework starling è pronto per partire.

Per fare questo andiamo ad intercettare un evento che starling solleva quando ha finito di inizializzare il contesto 3D, ovviamente inserite questa riga subito dopo l’istanziazione dell’oggetto _starling

_starling.stage3D.addEventListener(starling.events.Event.CONTEXT3D_CREATE, onCreate);

da notare due cose: la prima che utilizzo l’intero percorso per referire l’evento scelto; la seconda è che per poterlo riferire si deve includere  la classe degli eventi di starling

import starling.events.Event;

Ora creiamo la funzione che viene invocata alla cattura dell’evento.

In questa funzione andremo solamente ad inserire un timeOut che andrà a richiamare la funzione che permetterà al nemù di partire

private function onCreate(e:*):void
{
    tim = setTimeout(partenza,2000);
}

Ora definiamo la funzione partenza, che deve cancellare il timeOut e far partire _starling, ma soprattutto togliere lo splash screen

private function partenza():void
{
    clearTimeout(tim);
    removeChild(splashS);
    _starling.start();
}

come ultima cosa prima di testare andate ad includere le classi che permettono l’utilizzo dei timeOut

import flash.utils.setTimeout;
import flash.utils.clearTimeout;

Se testate ora il codice scritto, noterete che l’animazione presente nel menù si è persa, quindi dobbiamo andare a modificare due cosine per far l'animazione completa.

 

Iniziamo con l'inserire alla fine della funzione appena creata una chiamata al metodo start della classe Game; la funzione partenza dovrà risultare

private function partenza():void
{
    clearTimeout(tim);
    removeChild(splashS);
    _starling.start();
    Game.start();
}

Salviamo e chiudiamo pure il file, ora andiamo a modificare Game.as.

 

Considerando che la prima cosa che viene visualizzata del nostro gioco è sempre il menù, bisogna adare a togliere la riga che chiama il metodo inizialize di screenMenu

screenMenu.initialize();

A questo punto andiamo a creare la funzione start che chiamerà inizialize dello screenMenu

public function start():void
{
    screenMenu.initialize();
}

Ovviamente se provate a compilare ora vi verrà restituito un bellissimo errore.

 

Dato che non disponiamo di una variabile di tipo Game a livello della classe main, perchè viene istanzaia da starling mentre si inizializza il framework, quindi per poter riferire questo metodo andiamo a renderlo statico.

public static function start():void 

Anche questo non risolve il problema ma lo sposta, dato che ora è la variabile screenMenu a non essere istanziata, quindi rendiamo statica pure quella.

private static var screenMenu:Menu;

 

A questo punto andiamo ad ammirare il risultato.

 

Il link per il codice.

 

Campagne crowfunding

Just One Line
Siamo presenti su

     
Copyright ©2016 - Manifesto - Privacy - Termini di Servizio - Community - Collaboratori - Contattaci