MME Lente 05| via PHP importeren Flash

PHP

We gaan deze les externe waarden vanuit PHP in Flash laden. We hebben voor deze opdracht nog geen MySQL database nodig. In dit voorbeeld word een comboBox, drie tekstvelden, en een listBox gevuld binnen flash met data uit een PHP bestand. Voor deze opdracht heb je connectie met de cmd-server nodig of je maakt gebruik van een "localhost".

Als er nog niets (apache) werkt op je laptop, download dan: WAMPserver. Dit is een programmaatje wat automatisch apache, php en mysql installeert.
http://docent.cmd.hro.nl/posaj/download/wamp5_1.4.4.exe

PHP schrijven

Allereerst moet de PHP geschreven worden met de data die we later met Flash gaan inlezen.

In dit voorbeeld zijn er 9 variabelen in een php script. De eerste drie worden doorgegeven aan een combobox, de volgende drie gaan naar drie textfields en de laatste drie stukjes data worden geladen in een listbox.

Dit is de php Code;

     <?php
          $dataForCombobox_1 = "Dit is het eerste ComboBoxItem";
          $dataForCombobox_2 = "Dit is het tweede ComboBoxItem";
          $dataForCombobox_3 = "Dit is het derde ComboBoxItem";
          $dataForListbox_1 = "Dit is het eerste ListboxItem";
          $dataForListbox_2 = "Dit is het tweede ListboxItem";
          $dataForListbox_3 = "Dit is het derde ListboxItem";
          $dataForTxtbox_1 = "Dit is het eerste TxtboxItem";
          $dataForTxtbox_2 = "Dit is het tweede TxtboxItem";
          $dataForTxtbox_3 = "Dit is het derde TxtboxItem";
          print("&comboData1=$dataForCombobox_1");
          print("&comboData2=$dataForCombobox_2");
          print("&comboData3=$dataForCombobox_3");
          print("&listbData1=$dataForListbox_1");
          print("&listbData2=$dataForListbox_2");
          print("&listbData3=$dataForListbox_3");
          print("&textbData1=$dataForTxtbox_1");
          print("&textbData2=$dataForTxtbox_2");
          print("&textbData3=$dataForTxtbox_3"); 
     ?>

Eerst worden er 9 variabelen gedefinieerd met een string als waarde, dit is de tekst die je terug ziet in Flash. In PHP moet een variabele altijd beginnen met een $ symbool.
Hierna worden de PHP variabelen (met een $) omgezet naar een variabele die Flash begrijpt met het print commando. De variabelen die naar Flash gestuurd worden hebben het & symbool, net als dat je variabelen via een txt-bestand naar Flash stuurt.

Test het php-bestand in je browser zodat je zeker weet dat alles werkt.

Flash

Binnen Flash gebruik je weer het loadVars object om de data uit het php-bestand te halen. Dus Flash ontvangt de variabelen die d.m.v. het print commando zijn gegenereerd. Deze variabelen bevatten de text strings die weergegeven gaan worden in Flash

Zorg voor een stage met daarop een comboBox met instacename: myComboBox, een listBox met de instancename: myListBox en drie dynamische tekstvelden met de instancenames: txtBox1, txtBox2 en txtBox3.

Dit actionscript moet geplaatst worden in de root op een frame.

     myData = new LoadVars();
     myData.onLoad = function() {
          plaatsDeDataOpDeGoedePlaats();
     };
     myData.load("http://localhost/site/myData.php");
     plaatsDeDataOpDeGoedePlaats = function () {
          myComboBox.addItemAt(0, myData.comboData1);
          myComboBox.addItemAt(1, myData.comboData2);
          myComboBox.addItemAt(2, myData.comboData3);
          myListBox.addItemAt(0, myData.listbData1);
          myListBox.addItemAt(1, myData.listbData2);
          myListBox.addItemAt(2, myData.listbData3);
          txtBox1.text = myData.textbData1;
          txtBox2.text = myData.textbData2;
          txtBox3.text = myData.textbData3;
     };

Scrollen

Plak het scrolbalk component in tekstveld, zodat de tekst groter kan worden dan er past. Je ziet bij de properties van het component, de naam van het tekstveld verschijnen.

Wanneer je in flashmx 2004 werkt, is het niet mogelijk een scrollbar toe te voegen, bovendien zou je wel zelf een sroll willen maken met behulp van twee buttons, dit kan als volgt:

     btnUp.onPress = function(){
          if(txtVoorbeeld.scroll != 0){
               txtVoorbeeld.scroll--;
          }
     }
     btnDown.onPress = function(){
          if(txtVoorbeeld.scroll < txtVoorbeeld.maxscroll){
               txtVoorbeeld.scroll++;
          }
     }

Het tekstveld heeft dus de eigenschappen scroll en maxscroll, deze kan je eenvoudig toepassen om je eigen scroll buttons te maken.

CSS en Flash

Middels deze constructie kan je de vormgeving van de tekst binnen een textfield bepalen met een extern CSS bestand.
     format = new TextField.StyleSheet();
     format.load("flash.css");
     format.onLoad = function(loaded) {
          if (loaded) {
               output.styleSheet = format;
               myLoadVar = new LoadVars();
               myLoadVar.load("nieuws.txt");
               myLoadVar.onLoad = function(success) {
                    if (success) {
                         output.htmlText = this.nieuws;
                    } else {
                    output.text = "Error loading nieuws file!";
               }
          };
          } else {
               output.text = "Error loading CSS file!";
          }
     };
 

Links

Flash en CCS
http://www.actionscript.org/tutorials/beginner/css_in_flash/index.shtml

Flash en PHP: Gastenboek (is al oude tutorial)
http://www.macromedia.com/devnet/flash/articles/flashmx_php.html

Flash en PHP: Gastenboek en andere (nieuwere tutorials)
http://www.flash-db.com/Tutorials/guestbook/

Flash en PHP: Hele serie aan mogelijkheden
http://www.sephiroth.it/tutorials.php

Auteur: Barend Hendriks
Seizoen: Lente
Lesnummer: 05
Datum: 19-03-2006
Type les: MME