Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-05-2004, 14:44   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Vor / Zurück Button, dynamische Inhalte

Hi zusammen,

ich habe eine sehr umfangreiche MySQL Datenbank mit mehr als 1000 Datensätzen. Die Datenbank ist in einer Baumstruktur mittels id/root_id aufgebaut und über ein CMS administrierbar.
Die 3. Generation der Datensätze (Children's Children) enthält dann den eigentlichen Content, der jeweils immer aus einem Bildnamen, Datum, Kurztext besteht.
In Flash wird durch folgendes Script diese Baumstruktur ausgelesen:_

ActionScript:
  1. var firstGroup=new itemOwnerGroup();
  2.     _root.elements.createEmptyMovieClip('level2',1);
  3.     var sender=new LoadVars()
  4.     sender.object=this;
  5.     sender.root_id=_global.key_id-level_id; 
  6.     sender.sendAndLoad('query.php', sender, 'POST');
  7.     sender.onLoad=function(success)
  8.         {
  9.         if (success)
  10.             {
  11.             var base_y=-65;
  12.             var base_x=-465;       
  13.             for (var i=0; i<this.repeats; i++)
  14.                 {         
  15.                 var CompClip=itemOwnerClass.createSymbol(_root.elements.level2, 'level2_'+i, i, firstGroup);               
  16.                 CompClip.id=eval('this.id_'+i);
  17.                 CompClip._x=base_x;
  18.                 CompClip._y=base_y+(i*20);
  19.                 CompClip.onRelease=function()
  20.                     {
  21.                     this.group.switchSelection(this);                        
  22.                     var secondGroup=new itemOwnerGroup();
  23.                     _root.elements.createEmptyMovieClip('level3',2);                   
  24.                     var sender2nd=new LoadVars()
  25.                     sender2nd.object=this;
  26.                     sender2nd.root_id=this.id
  27.                     sender2nd.sendAndLoad('query.php', sender2nd, 'POST');
  28.                     sender2nd.onLoad=function(success)
  29.                         {
  30.                         if (success)
  31.                             {
  32.                             for(var j=0; j<this.repeats; j++)
  33.                                 {                  
  34.                                 var CompClip2=itemOwnerClass.createSymbol(_root.elements.level3, 'level3_'+j, j, secondGroup);
  35.                                 CompClip2.id=eval('this.id_'+j);
  36.                                 CompClip2.date=eval('this.date_'+j);
  37.                                 CompClip2.name=eval('this.name_'+j);
  38.                                 CompClip2._x=base_x+125;
  39.                                 CompClip2._y=base_y+(j*20);
  40.                                 CompClip2.onRelease=function()
  41.                                     {
  42.                                     this.group.switchSelection(this);
  43.                                     _root.varChar(this.name, this.date);
  44.                                     _root.elements.createEmptyMovieClip('level4',3);
  45.                                     var sender3rd=new LoadVars()
  46.                                     sender3rd.object=this;
  47.                                     sender3rd.root_id=this.id;
  48.                                     sender3rd.sendAndLoad('query.php', sender3rd, 'POST');
  49.                                     sender3rd.onLoad=function(success)
  50.                                         {
  51.                                         if (success)
  52.                                             {
  53.                                             for(var k=0; k<this.repeats; k++)
  54.                                                 {
  55.                                                 //script
  56.                                                 }
  57.                                             delete this.object['sender3rd'];
  58.                                             }
  59.                                         }                        
  60.                                     }
  61.                                 }
  62.                             _root.elements.level3.level3_0.onRelease();
  63.                             delete this.object['sender2nd'];
  64.                             }                  
  65.                         }
  66.                     }
  67.                 _root.elements.level2.level2_0.onRelease();
  68.                 delete this.object['sender'];            
  69.                 }   
  70.             }
  71.         }
  72.     }

Dort, wo im Script //Script auskommentiert ist, handelt es sich um meine Frage.

Wenn jeder Datensatz der 2. Generation nur 1 Child hätte, könnte ich den Inhalt einfach mit AttachMovie eine Komponente die die Variablen bekommt, auf die Bühne projezieren. Nun sind teilweise aber bis zu 100 Children vorhanden. Um alle zu attachen müsste ich diese in eine Scrollpane stecken, was aber vom Kunden nicht gewünscht ist. Außerdem wäre der Datenumfang zu groß.

Nun würde ich das gerne wie eine Bildergalerie lösen, allerdings so, das der erste Datensatz angezeigt wird. Dazu lege mit mich attachMovie eine Komponente auf die Bühne, der ich dann entsprechende Variablen mitgebe und dort auch das Bild hineinlade.

Es soll am Rand eine Zahl der gesamten Datensätze auftauchen, also bei 100 Bildern die Zahl 100, sowie ein Zähler, der anzeigt, bei welchem Bild man sich befindet.
Das dürfte ebenfalls kein Problem sein, da man die Zahl des aktuellen Datensatzes mitgeben kann und die Gesamtzahl bei Auslesen der PHP Datei ermittelt wird.

Nun, zum Punkt… wie wird navigiert? Ich würde gerne einen Vor / Zurück Button einbauen, mit dem man einfach einen Datensatz weiterspringen kann. Nur habe ich absolut keine Ahnung wie ich das anstellen soll…
Ich habe überlegt, beim ersten Klicken auf die 2. Generation für jeden Datensatz eine Funktion anzulegen… aber dann frage ich mich, wie kriege ich die Buttons dazu, diese Funktionen auszuführen? Es scheitert irgendwie an der Übergabe…

Könnte man nicht auf die Vor/Zurück Buttons ein loadVars Objekt legen, dem man dann immer die entsprechende ID des nächsten bzw vorherigen Datensatzes gibt? Wenn ja, wie kriegt man dann das Problem mit eventuell nicht folgenden ID's wegen auto increment in MySQL gelöst? Und wie setzt man Anfang und End ID?

Ich glaube, irgendwie muss das alles beim ersten auslesen passieren.

Technisch bin ich soweit, das ich alle Inhalte direkt auf die Bühne werfen kann… aber das soll ja nicht…

Hier noch das PHP Skript:

PHP-Code:
<?php
require_once('cms/config.inc.php');
require_once(
'cms/function.inc.php');
$i=0;
$read=mysql_query("select * from $db_tab where root_id='$_POST[root_id]' order by id asc",$handler);
while(
$a=mysql_fetch_array($read))
    {
    
$result.='&id_'.$i.'='.$a['id'];
    
$result.='&root_id_'.$i.'='.$a['root_id'];
    
$result.='&date_'.$i.'='.$a['date'];
    
$result.='&name_'.$i.'='.workaround::replace(strtoupper($a['name']));
    if(!empty(
$a['image']))
        {
        
$result.='&image_'.$i.'='.$file_source.$a['image'];
        }
    
$result.='&link_'.$i.'='.$a['link'];
    
$result.='&text_'.$i.'='.workaround::replace(strtoupper($a['text']));
    
$result.='&query_id_'.$i.'='.date('U');
    
$i++;
    }
$result.='&repeats='.$i;
echo 
utf8_encode($result);
?>

Any Ideas?


Liebe Grüße


Yves
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele