Adobe Flash Anleitung | dynamische Scrollpane aus Actionscript/PHP & MySQL

S

sevY

Hi zusammen,

hier möchte ich anhand des Beispiels eines simplen Bookingkalenders für zb. Bands zeigen, wie man mehrere Datensätze mit PHP als Bridge aus MySQL ausliest und in Flash dann eine Scrollpane instanziert und mit diesen Inhalten füllt.

Außerdem ist ein simples Admintool zur Verwaltung der Dbase mitinbegriffen, sowie die mittlerweile schon obligatorische Flashdetection.

Die Verwendung der function.inc.php zum Escapen des Variablenseparators '&' in Actionscript, sowie die Funktion und Arbeitsweise der Flashdetection ist hier erklärt. Falls ihr noch keine Erfahrungen mit PHP, MySQL und Actionscript in diesem Zusammenhang habt, sollte ihr auch erst jenes Tutorial durcharbeiten.

Beginnen wir hier dann direkt mit der Query.php

PHP:
<?php
require_once('config.inc.php');
require_once('function.inc.php');
$i=0;
$read=mysql_query("Select date,event,location from $db_tab order by date desc",$handler);
while($a=mysql_fetch_array($read))
    {
    $result.='&date_'.$i.'='.charReplace::replace(utf8_encode($a['date']));
    $result.='&event_'.$i.'='.charReplace::replace(utf8_encode($a['event']));
    $result.='&location_'.$i.'='.charReplace::replace(utf8_encode($a['location']));
    $i++;
    }
$result.='&repeats='.$i;
echo $result;
?>

Der Unterschied zum vorherigen Tutorial ist, das wir hier 3 Variablen definieren, welche pro Datensatz durchgezählt werden.

Diese Werte werden in folgendem Actionscript weiterverarbeitet.

PHP:
//Actionscript 1.0
MovieClip.prototype.loader=function()
    {
  
    var scrollpane=_root.attachMovie('FScrollPaneSymbol','scrollpane',1);
    scrollpane._x=0;
    scrollpane._y=0;
    scrollpane.width=500;
    scrollpane.height=200;
  
    var loader=new LoadVars();
    loader.object=this;
    loader.load('query.php');
    loader.onLoad=function()
        {
      
      
        var base_x=10;
        var base_y=0;
        var container=createEmptyMovieClip('container',2);
        for(var i=0;i<=this.repeats;i++)
            {          
            var element=container.attachMovie('element','event'+i,i);
            element.date=this['date_'+i];      
            element.event=this['event_'+i];
            element.location=this['location_'+i];
            element._y=base_y+(i*50);
            }
          
        scrollpane.setScrollContent(container);
        scrollpane.setVScroll=false;
        scrollpane.setHScroll=auto;
        container._x=base_x;

        delete this.object['loader'];
        };
    };
loader();
this.stop();

Das Interessante für alle, die bisher wenig mit Flash gearbeitet haben ist, das die Bühne vollkommen leer ist und alles per Script erstellt wird.


Zuerst wird die Scrollpane aus der Library auf der Bühne instanziert und in Bezug auf Größe und Platzierung definiert.

Anschließend liest nun das loadVars Objekt mittels der Query.php die Datensätze aus MySQL aus.

Dabei werden die Datensätze synchron ebenfalls mittels i-Zähler durchnumeriert. Das ganze geschieht in einer for-Schleife, dessen Terminierungswert wir von PHP übermittelt bekommen.

Es wird also ein leerer MovieClip dynamisch erstellt, in den wir dann pro Datensatz einen MovieClip einfügen.

Dieser MovieClip besitzt 3 Komponentendefinitionen als Eigenschaften vom Datentyp String. Diese 3 Eigenschaften werden in der for-Schleife mit den Werten aus PHP definiert, damit die in diesem MovieClip enthaltenen, dynamischen Textfelder ihren Inhalt zugewiesen bekommen können.

Die Position der einzelnen DatensatzMovieClips wird mittels des i-Zählers und der Multiplikation dessen mit dem gewünschten Abstand definiert.


Anschließend setzen wir den Container, der die Elemente enthält, als ScrollContent der zuvor instanzierten Scrollpane und definieren die Komponentenparameter bzw. Eigenschaften dieser bezüglich des horizontalen und vertikalen Scrollverhaltens.

Ist das geschehen, richten wir den Container in der Scrollpane nocheinmal aus, indem wir den Abstand zur linken Aussenseite relativ um 10px vergrößern.

Das war's.

Das mitingebriffene Admintool und dessen Funktionen brauche ich hier nicht näher zu erklären, da es den Rahmen des Flashforums sprengen würde.

Delmar wird euch jedoch gerne in seinem Forum dazu weitere Fragen beantworten.

Viel Spaß damit.


Liebe Grüße

Yves
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben Unten