Uso di CreateJs PreloadJS, SoundJS e TweenJS

Nella prima parte di questa serie sull'uso di CreateJs, abbiamo esaminato EaselJs. In questa seconda e ultima parte, vedremo PreloadJs, SoundJs e TweenJs.

PreloadJS

PreloadJS è una libreria che ti consente di gestire e coordinare il caricamento delle risorse. PreloadJS facilita il precaricamento delle risorse, come immagini, suoni, JS, dati e altro. Usa XHR2 per fornire informazioni reali sui progressi quando disponibili o ripiega sul caricamento dei tag e agevola il progresso quando non lo è. Consente più code, più connessioni, interrompendo code e molto altro.

In PreloadJS, la classe LoadQueue è l'API principale per il precaricamento del contenuto. LoadQueue è un gestore di carico, che può precaricare un singolo file o una coda di file. var queue = new createjs.LoadQueue (true);, passare false potrebbe forzare il tag-caricamento laddove possibile. LoadQueue ha diversi eventi a cui puoi iscriverti:

  • completo: attivato quando una coda completa il caricamento di tutti i file
  • errore: attivato quando la coda incontra un errore con qualsiasi file.
  • progresso: il progresso per quando l'intera coda è cambiata.
  • fileload: per quando un singolo file ha completato il caricamento.
  • fileprogress: il progresso per quando un singolo file ha delle modifiche. per favore Nota che solo i file caricati con XHR (o eventualmente con plugin) generano eventi di avanzamento diversi da zero o 100%.

È possibile caricare singoli file chiamando loadfile ("percorso per file") o caricare più file chiamando loadManifest () e passando una serie di file che si desidera caricare.

I tipi di file supportati di LoadQueue include il seguente.

  • BINARY: dati binari non elaborati tramite XHR
  • CSS: file CSS
  • IMMAGINE: formati di immagine comuni
  • JAVASCRIPT: file JavaScript
  • JSON: dati JSON
  • JSONP: file JSON interdominio
  • MANIFEST: un elenco di file da caricare in formato JSON, vedere loadManifest
  • SUONO: formati di file audio
  • SVG: file SVG
  • TESTO: file di testo - solo XHR
  • XML: dati XML

Ecco un esempio di utilizzo di PreloadJS da caricare in un file JavaScript, alcuni PNG e un MP3.

var canvas = document.getElementById ("Canvas"); var stage = new createjs.Stage (canvas); var manifest; var preload; var progressText = new createjs.Text ("", "20px Arial", "# 000000"); progressText.x = 300 - progressText.getMeasuredWidth () / 2; progressText.y = 20; stage.addChild (progressText); stage.update (); function setupManifest () manifest = [src: "collision.js", id: "myjsfile", src: "logo.png", id: "logo", src: "ForkedDeer.mp3", id : "mp3file"]; per (var i = 1; i<=13;i++) manifest.push(src:"c"+i+".png")  function startPreload()  preload = new createjs.LoadQueue(true); preload.installPlugin(createjs.Sound); preload.on("fileload", handleFileLoad); preload.on("progress", handleFileProgress); preload.on("complete", loadComplete); preload.on("error", loadError); preload.loadManifest(manifest);  function handleFileLoad(event)  console.log("A file has loaded of type: " + event.item.type); if(event.item.id == "logo") console.log("Logo is loaded"); //create bitmap here   function loadError(evt)  console.log("Error!",evt.text);  function handleFileProgress(event)  progressText.text = (preload.progress*100|0) + " % Loaded"; stage.update();  function loadComplete(event)  console.log("Finished Loading Assets");  setupManifest(); startPreload();

All'interno del setupManifest () funzione stiamo aggiungendo un file JavaScript, un MP3 e un file PNG. Passiamo un oggetto con le chiavi "src" e "id". Utilizzando "id" saremo in grado di identificare la risorsa una volta caricata. Infine, passiamo in loop e aggiungiamo altre 13 immagini nell'array. Non avrai sempre bisogno di un "id" se vuoi solo assicurarti che alcune risorse vengano caricate.

Stiamo ascoltando gli eventi "fileload", "progress" e "complete". L'evento fileload si attiva quando viene caricato un singolo file, lo stato di avanzamento è per ottenere lo stato di avanzamento di loadQueue e il completamento viene eseguito quando tutti i file sono stati caricati. Nel handleFileLoad () funzione stiamo registrando il tipo di file, che può essere molto utile. Controlliamo anche l'articolo id, è così che puoi tenere traccia dei precarichi e fare qualcosa di appropriato con le risorse.

Nota: per poter caricare il suono, devi chiamare installPlugin (createjs.Sound) che abbiamo fatto all'interno del startPreload funzione.

TweenJS

La libreria TweenJS è per il tweening e l'animazione di proprietà HTML5 e JavaScript. Fornisce un'interfaccia tweening semplice ma potente. Supporta il tweening di entrambe le proprietà degli oggetti numerici e le proprietà di stile CSS e consente di concatenare interpolazioni e azioni per creare sequenze complesse.

Per configurare un Tween, si chiama il Tween (target, [props], [pluginData]) costruttore con le seguenti opzioni.

  • target: l'oggetto target che avrà le sue proprietà interpolate
  • oggetti di scena - Le proprietà di configurazione da applicare a questa istanza di interpolazione (ad esempio, loop: true, pause: true). Tutte le proprietà sono impostate su false. Gli oggetti di scena supportati sono:
    • loop: imposta la proprietà loop su questa tween.
    • useTicks: usa tick per tutte le durate invece di millisecondi.
    • ignoreGlobalPause: imposta la proprietà ignoreGlobalPause su questa interpolazione.
    • override: se è vero, Tween.removeTweens (target) verrà chiamato per rimuovere eventuali altre interpolazioni con lo stesso target.
    • in pausa: indica se avviare l'interpolazione in pausa.
    • posizione: indica la posizione iniziale per questa interpolazione.
    • onChange: specifica un listener per l'evento "change".
  • pluginData: un oggetto contenente dati da utilizzare con plug-in installati

Le proprietà Tween tweens di proprietà per un singolo target. I metodi di istanza possono essere concatenati per semplificare la costruzione e il sequenziamento. Non è una classe molto grande e ha solo pochi metodi, ma è molto potente.

Il a (puntelli, durata, facilità) metodo, accoda un'interpolazione dai valori correnti alle proprietà di destinazione. Imposta la durata a 0 per saltare immediatamente al valore. Le proprietà numeriche verranno interpolate dal loro valore corrente nell'interpolazione sul valore di destinazione. Le proprietà non numeriche verranno impostate alla fine della durata specificata.

Il attendere (durata, passiva) mette in coda un'attesa (essenzialmente un'interpolazione vuota).

Il chiamata (richiamata, params, scope) metodo Mette in coda un'azione per chiamare la funzione specificata

TweenJS supporta un gran numero di eases forniti dalla classe Ease.

Nella demo seguente, puoi fare clic sul palco per vedere la demo.

In questa demo, creiamo Bitmap e Testo oggetti. Abbiamo messo il logo fuori dalla parte superiore del palco e quando l'utente fa clic sul palco lo tocchiamo al centro del palco mentre cambiamo la sua scala X e Y. Noi usiamo il aspettare() metodo per dare un secondo di ritardo, quindi usiamo il chiamata() metodo per interpolare il testo. Nell'interpolazione di testo, cambiamo l'alfa, eseguiamo una rotazione di 360 gradi, l'interpolazione a sinistra dello stage.

TweenJS è molto divertente, prova a utilizzare alcune delle altre proprietà degli oggetti di visualizzazione

SoundJS

SoundJS è una libreria che fornisce una semplice API e potenti funzionalità per rendere il lavoro con l'audio un gioco da ragazzi. La maggior parte di questa libreria viene utilizzata in modo statico (non è necessario creare un'istanza). Funziona tramite plugin che astraggono l'effettiva implementazione audio, quindi la riproduzione è possibile su qualsiasi piattaforma senza una conoscenza specifica dei meccanismi necessari per riprodurre i suoni.

Per utilizzare SoundJS, utilizzare l'API pubblica nella classe Sound. Questa API è per:

  • Installazione di plug-in di riproduzione audio
  • Registrazione (e precaricamento) suoni
  • Creare e suonare suoni
  • Regola i comandi volume, silenziamento e arresto per tutti i suoni contemporaneamente

Riproduzione di suoni crea SoundInstance istanze, che possono essere controllate individualmente. Puoi:

  • Metti in pausa, riprendi, cerca e ferma i suoni
  • Controlla il volume, l'audio e il pan del suono
  • Ascolta gli eventi sulle istanze sonore per ricevere notifiche quando finiscono, eseguono il loop o falliscono

Di seguito è riportato il codice minimo necessario per riprodurre un file audio.

createjs.Sound.initializeDefaultPlugins (); createjs.Sound.alternateExtensions = ["ogg"]; var myInstance = createjs.Sound.play ("IntoxicatedRat.mp3");

Tuttavia, non potevo farlo funzionare sulla mia macchina in Firefox e Chrome, sebbene quanto sopra funzionasse in IE. Il plug-in predefinito era predefinito su WebAudio, dovevo registrarlo per utilizzare HTMLAudio come di seguito.

createjs.Sound.registerPlugins ([createjs.HTMLAudioPlugin]); console.log (createjs.Sound.activePlugin.toString ()); createjs.Sound.alternateExtensions = ["ogg"]; var mySound = createjs.Sound.play ("IntoxicatedRat.mp3");

Nelle sezioni di codice sopra, usiamo il alternateExtensions proprietà che tenterà di caricare il tipo di file OGG se non può caricare MP3.

Con le nozioni di base, creeremo un lettore MP3. Guarda la demo e la schermata qui sotto.


Per prima cosa chiamiamo registerPlugins () utilizzare HTMLAudio e impostare l'estensione alternativa in modo che proverà a caricare OGG se il browser non supporta MP3.

createjs.Sound.registerPlugins ([createjs.HTMLAudioPlugin]); createjs.Sound.alternateExtensions = ["ogg"];

All'interno del riprodurre l'audio() funzione, chiamiamo il giocare() metodo che riproduce uno dei file audio dal brani array. Impostiamo il volume dei suoni usando il setVolume () metodo, usiamo l'ascoltatore "completo" per essere allarmato quando il suono corrente è finito.

theMP3 = createjs.Sound.play ("./ sounds /" + tracks [currentSong] + ". mp3"); theMP3.setVolume (vol); theMP3.on ( "completo", songFinishedPlaying, null, false);

Per tutto il resto del codice, usiamo il giocare(), Stop(),pausa() e curriculum vitae() metodi.

theMP3.play (); theMP3.stop (); theMP3.pause (); theMP3.resume ();

Non ho dato una spiegazione linea per linea del lettore MP3, ma se avete domande, non esitate a chiedere nei commenti.

Space Invader Game

Come menzionato nella prima parte di questo tutorial, ecco una demo del gioco Space Invaders con pre-caricamento, audio e tweens aggiunti in.

Conclusione

Questo conclude il nostro tour di CreateJS. Si spera che dai due articoli precedenti, hai visto quanto sia facile creare una ricca applicazione interattiva con CreateJS.

La documentazione è di prim'ordine e contiene una grande quantità di esempi, quindi assicurati di verificarli.

Spero che tu abbia trovato questo tutorial utile e che tu sia entusiasta dell'uso di CreateJS. Hanno appena annunciato sul loro blog che il supporto beta per WebGL è ora disponibile pure. Grazie per aver letto!