ActionScript 3.0/Externe-Bestanden: verschil tussen versies

Uit Wikibooks
Verwijderde inhoud Toegevoegde inhoud
KKoolstra (overleg | bijdragen)
kGeen bewerkingssamenvatting
Klaasyk (overleg | bijdragen)
→‎Een aanvraag doen naar een bestand: Laatste stuk toegevoegd over hoe je meerdere variabelen kunt lezen.
Regel 49: Regel 49:
<br>
<br>
De gegevens komen terug in de klasse ''String'' .<br>
De gegevens komen terug in de klasse ''String'' .<br>
Nu heb staat er in het bestand niet voor niets msg=Hello World! Typ je namelijk: ''trace(received.msg)'' dan wordt er alleen Hello World! weergeven. Je kunt zo ook meerdere variabelen doorgeven door deze te scheiden met een & teken.<br>

Bijvoorbeeld: part1=Hello&part2=World!<br>
Dit wordt ook wel een [[ActionScript 3.0/Datatypes|URL gecodeerde string]] genoemd. (Dit zie je vaak ook in je adresbalk van je browser achter een ? staan.)


== Werken met afbeeldingen ==
== Werken met afbeeldingen ==

Versie van 24 okt 2011 12:56

ActionScript 3.0 Redelijk ontwikkeld. Revisiedatum: onbekend

  1. Inleiding Nog vrijwel niets. Revisiedatum: 19 januari 2011
  2. Basis Nog vrijwel niets. Revisiedatum: 19 januari 2011
  3. Variabelen Zeer goed ontwikkeld. Revisiedatum: 19 januari 2011
  4. Datatypes Zeer goed ontwikkeld. Revisiedatum: 19 januari 2011
  5. Functies Redelijk ontwikkeld. Revisiedatum: 19 januari 2011
  6. Aan de slag Goed ontwikkeld. Revisiedatum: 24 januari 2011
  7. Tutorial Redelijk ontwikkeld. Revisiedatum: 26 september 2011
  8. Instanties Nog vrijwel niets. Revisiedatum: 28 september 2011
  9. Statements-lussen In ontwikkeling. Revisiedatum: 25 januari 2011
  10. Operatoren Zeer goed ontwikkeld. Revisiedatum: 8 februari 2011
  11. Methoden Nog vrijwel niets. Revisiedatum: 24 januari 2011
  12. Klassen Nog vrijwel niets. Revisiedatum: 19 januari 2011
  13. Externe bestanden Redelijk ontwikkeld. Revisiedatum: 24 oktober 2011

Het kan in sommige gevallen handig zijn om met externe bestanden te werken in plaats van alles in het .fla of .swf bestand bij te voegen.
De voordelen hiervan zijn:

  • Je .sfw bestand wordt kleiner en is dus sneller te downloaden.
  • Je hebt soms niet alle afbeeldingen of andere media nodig die worden bijgevoegd in het .swf bestand.
  • Je kunt communiceren met serverscripts en zo ook met databases.


Je hebt hier alleen de klassen URLLoader en URLRequest voor nodig.

Een aanvraag doen naar een bestand

Maak een simpel tekstbestand (.txt) aan met de volgende tekst:

msg=Hello World!

En noem het bestand greeter.txt
Maak vervolgens een nieuw flashbestand aan (.fla) en selecteer bij het eerste frame actions(handelingen).
Neem dan de volgende code over:

//Eerst de benodige pakketten importeren.
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.*;

//Hieronder maak je een variabele van de klasse URLRequest aan.
var request:URLRequest = new URLRequest("greeter.txt");
//Hierin is greeter.txt de URL naar het bestand.
//Dit mag dus ook een webadres zijn
//LET OP! neem dan wel het hele adres over! (incl. http://)

//Daarna heb je variabele nodig om het bestand te laden.
var loader:URLLoader = new URLLoader();

//Vervolgens laad je het bestand met .load(URLRequest):
loader.load(request);


Nu heb je het bestand aangeroepen, maar voor het verwerken van de opgeroepen informatie heb je een EventListener nodig.

//Voeg een Eventlistener toe aan de Loader variabele
loader.addEventListener(event.COMPLETE, CompleteHandler);

function CompleteHandler(event:Event):void
{
 //Maak een nieuwe variabele aan om de gegevens te verwerken.
 var received = event.target.data;
 trace(received);
//Output: msg=Hello World!
}


De gegevens komen terug in de klasse String .
Nu heb staat er in het bestand niet voor niets msg=Hello World! Typ je namelijk: trace(received.msg) dan wordt er alleen Hello World! weergeven. Je kunt zo ook meerdere variabelen doorgeven door deze te scheiden met een & teken.
Bijvoorbeeld: part1=Hello&part2=World!
Dit wordt ook wel een URL gecodeerde string genoemd. (Dit zie je vaak ook in je adresbalk van je browser achter een ? staan.)

Werken met afbeeldingen

Natuurlijk kun je deze techniek ook voor afbeeldingen gebruiken.
De volgende bestandsindelingen worden ondersteund:

  • Jpeg (.jpg, .jpeg etc.)
  • PNG (.png)
  • GIF (.gif) Zowel een geanimeerde filmclip als een enkele afbeelding wordt ondersteund


import flash.display.DisplayObject();
//Maak eerst een object aan om het plaatje te tonen.
var myPicture:DisplayObject = new DisplayObject();

//Daarna doen we opnieuw een aanvraag naar het bestand.
//Bij voorkeur in dezelfde map als het .swf bestand, maar ook een webadres is mogelijk.
var request:URLRequest = new URLRequest("mijnAfbeelding.png");

Helaas kun je hier niet gebruikmaken van de klasse URLLoader omdat we de afbeelding ook gaan weergeven. Dit levert namelijk een foutmelding op bij het toevoegen aan de stage.
Gelukkig heeft actionscript hier een andere klasse voor: Loader

//Importeer de onderstaande klassen.
import flash.display.Loader;
import flash.display.contentLoaderInfo;

//De ContentLoaderInfo klasse wordt gebruikt om te controleren wanneer het downloaden van de afbeelding voltooid is.
//Maak een nieuwe variabele aan voor de lader;
var myPictureLoader:Loader = new Loader();
//Laad de afbeelding met de load methode;
myPictureLoader.load(request);
//Voeg ook een eventlistener om te controleren wanner het downloaden voltooid is.
myPictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, toonafbeelding);

//Maak een functie aan om de afbeelding te tonen.
function toonafbeelding (e:Event)
{
//Voeg daarna de loader toe aan de stage, bij voorkeur onder de eerder aangemaakte container variabele.
myPicture.addChild(myPictureLoader);
//Dit zal de afbeelding naar de stage toe laden.
}

Communiceren met een webserver

In sommige gevallen is het handig om cantact te leggen met een server en zelfs daaraan gekoppelde databases.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.