Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-08-2010, 18:51   #1 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Smile Load Multiple External Images (dynamically)

Hallo Community

Meine Absicht: Aus einem Ordner "img" mit PHP-Skript Anzahl der Bilder (alle nach dem Schema: 0.jpg, 1.jpg, ... benannt) herausfinden (geschafft), diese dann an die SWF-Datei schicken (geschafft) und dann pro Bild in einem Array "listeBilder" ein Element String(i) + ".jpg" erstellen (Code dafür ist da, funktioniert aber aus mir unersichtlichen Gründen nicht) und damit abschließend die Bilder in einen Array "listeMC" laden (da kenn ich mich dann überhaupt nicht mehr aus, Code zwar da, aber da wird gar nichts reingeladen, geschweige denn irgendwie angezeigt)

Der Code ist eigentlich schon zu 90% fertiggestellt (die Bilderanzeige habe ich noch nicht programmiert, da es mir noch nicht einmal möglich war ein einziges Bild nach oben genannter Prozedur in den Array zu laden), und ist in einer externen AS-Datei, nur den Array in dem die Bilder gespeichert werden sollten ("listeMC") ist in der FLA-Datei, da ich ja auf ihn zugreifen will (ergibt auch keinen Fehler, wenn ich den Array aber in der AS-Datei definiere und mit der FLA darauf zugreifen will kommt mir immer eine Fehlermeldung (obwohl ich vor so ziemlich alles ein "public" gestellt habe))

PHP-Code:
package {
    
    
import flash.display.MovieClip;
    
import flash.events.*;
    
import flash.net.*;
    
import flash.display.Loader;
    
    public class 
Main extends MovieClip {
        
        public function 
Main()  {
            
            
// Prepare request                                             #/////////////////////////////////////////
            
var request:URLRequest = new URLRequest("countImages.php");    //                                        //
            
request.method URLRequestMethod.GET;                        //                                        //
                                                                        //    PHP Variablen auslesen                //
            
var loader:URLLoader = new URLLoader();                        //                                        //
            
loader.dataFormat URLLoaderDataFormat.VARIABLES;            //                                        //
            
loader.addEventListener(Event.COMPLETEcompleteHandler);    //                                        //
            
loader.load(request);                                        /////////////////////////////////////////#
            
            
var anzahlBilder:int;                                        //wurde gerade aus PHP-File ausgelesen
            
            
function completeHandler(evt:Event) {
                
                
anzahlBilder evt.target.data.bilder;                            //funktioniert
                
                
trace ("Im \"img\" Ordner befinden sich " anzahlBilder " Bilder.");
                
                var 
listeBilder:Array = new Array();                            //Hier werden Bildernamen (0.jpg, 1.jpg, ... ) hereingeladen
                
                
for (var i:int=0anzahlBilderi++) {
                    
listeBilder[i] = String(i) + ".jpg";                        //Elemente werden der Liste hinzugefügt
                    
ausgabe.appendText(listeBilder[i]);
                    
                    var 
request:URLRequest = new URLRequest(listeBilder[i]);
                    var 
loader:Loader = new Loader;
                        
loader.load(request);
                    
                        
listeMC[i].addChild(loader);
                }
            }
        }
    }

Ich hab hier einfach mal die ganze AS-Datei gepostet, da ich mich damit ehrlichgesagt nicht wirklich auskenne und auch keine Idee habe wo der Fehler ist.

Da mir in dem Forum immer freundlich und schnell geholfen wurde, hoffe ich auch dieses mal wieder auf eure Hilfe!
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.
peat-ar ist offline   Mit Zitat antworten
Alt 24-08-2010, 19:00   #2 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
der listener wird nicht dem loader selbst sondern dessen contentLoaderInfo objekt zugewiesen...

ActionScript:
  1. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
ING ist offline   Mit Zitat antworten
Alt 24-08-2010, 19:11   #3 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Question

Wenn ich das mache kommt aber eine Fehlermeldung..."Zugriff auf eine möglicherweise nicht definierte Eigenschaft contentLoaderInfo über einen Verweis mit statischem Typ flash.net:URLLoader"

Der Teil klappt ja aber eh (ist ja dafür da PHP-Variable entgegenzunehmen und das funktioniert noch)
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.
peat-ar ist offline   Mit Zitat antworten
Alt 24-08-2010, 19:38   #4 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
ach so ja, is ja ein URLloader, hab nur das import loader oben gesehen und es fürn loader gehalten, vergiß was ich schrieb, oder doch nicht, brauchst du ja später noch

was genau funktioniert denn nicht? ansonsten würde es helfen ne txt zur verfügung zustellen damit man es selbst testen kann.
ING ist offline   Mit Zitat antworten
Alt 25-08-2010, 08:03   #5 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
naja, das mit dem testen ist auch bei mir irgendwie ein problem, da ich beim debuggen keinen zugriff auf das PHP-File habe --> deshalb auch nur schwer feststellen kann was genau nicht funktioniert, denn es kommt ja keine fehlermeldung, aber es passiert halt einfach nicht was passieren sollte. Also hab ich mir sozusagen ein eigenes ausgabefeld (fürs "im-browser-/-auf-dem-server-testen") gemacht (txt-feld namens "ausgabe") aber wenn ich da hinschreibe er solle mit .appendText(listeBilder[i]) alle namen der bilder anzeigen kommt nicht grad das erwartete ergebnis (erwartet: 0.jpg1.jpg....is mir auch egal obs in einer zeile ist, aber der zeigt immer nur 0.jpg an. egal wie viele bilder drin sind -.-)

Also ich kann daraus nur schlussfolgern dass ab der schleife
PHP-Code:
for (var i:int=0anzahlBilderi++) { 
irgendetwas schief läuft. das mit der php variable auslesen klappt, dh man könnte zum debugging auch einfach statt anzahlBilder eine zahl seiner wahl nehmen (wenn er dann den fehler ausgeben würde, dass er diese bilder nicht finden würde wäre ich schon überglücklich )

EDIT: Noch eine frage nebenbei: debuggen mit Strg + Shift + Enter geht irgendwie nur mit der FLA-Datei, auf die AS-Datei hab ich irgendwie keinen zugriff, oder? Das stellt auch ein kleines Problem dar, da ich 99% des Codes in der AS-Datei habe

EDIT: Wenn ich
PHP-Code:
                   var request:URLRequest = new URLRequest(listeBilder[i]); 
                    var 
loader:Loader = new Loader
                        
loader.load(request); 
                     
                        
listeMC[i].addChild(loader); 
"wegkommentiere", dann funktionierts soweit, nur werden jez keine bilder geladen, ich schätze innerhalb dieser zeilen ist irgendein fehler wegen dem die schleife unterbrochen wird (deshalb vorher immer nur das erste element ausgegeben), könnte da mal bitte jemand nach dem fehler suchen? ^^ ich hab überhaupt keine ahnung von diesem ganzen loader-zeugs, usw
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.

Geändert von peat-ar (25-08-2010 um 08:37 Uhr)
peat-ar ist offline   Mit Zitat antworten
Alt 25-08-2010, 09:47   #6 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Ok, ich komm mir jetzt grad vor wie ein Trottel, aber nachdem ich mich durch jede Zeile einzeln "durchkommentiert" habe, bin ich auf den Fehler gekommen. Ich kann das aktuelle Element dem Array "listeMC" nur per "Event.COMPLPETE" Funktion übergeben. Außerdem musste ich die Elemente von "listeBilder" 'img' + String(i) + '.jpg' benennen...

Jetzt habe ich aber das peinliche Problem, dass ich nicht weiß wie ich die Bilder anzeigen soll/kann...

Also dachte ich es würde vielleicht gehen, wenn ich es wie in diesem Tutorial machen würde (hab also flash.display.Bitmap ge-"imported" und meine Funktion (die bei Event.COMPLETE aufgerufen wird) sieht jetzt folgendermaßen aus:
PHP-Code:
var image:Bitmap = new Bitmap(evt.target.content.bitmapData);
listeMC[i].addChild(image);
ausgabe.appendText(String(listeMC.length)); 
Wenn ich jetzt aber mit letzter Zeile überprüfen will wie viele / OB Bilder in diesen Array geladen wurden, dann kommt bei dem "ausgabe"-Textfeld einfach genau dasselbe, als ob die diese letzte Zeile / ganze Funktion gar nicht geschrieben hätte!! (Habs auch ohne dem ganzen Bitmap-Zeugs versucht (mit der "loader"-Variable, aber das klappt einfach nicht)

Hat jemand eine Ahnung wie ich diese Bilder auf die Bühne bringe? Mir ist es völlig egal wie, möchte sie nur per ActionScript ansprechen können (deshalb halt der Array)!

PLS HELP!!!
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.
peat-ar ist offline   Mit Zitat antworten
Alt 25-08-2010, 16:14   #7 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Exclamation Juhuu triple post ^^

Das Projekt ist wie eine Hydra, kaum ist man ein Problem los, tun sich 2 neue auf -.-

Der Code sieht folgendermaßen aus:
PHP-Code:
            function completeHandler(evt:Event) {
                
                
anzahlBilder evt.target.data.bilder;
                
                var 
listeBilder:Array = new Array();                            //Hier werden Bildernamen (0.jpg, 1.jpg, ... ) hereingeladen
                
                
for (var i:int=0anzahlBilderi++) {
                    
listeBilder[i] = "img/" String(i) + ".jpg\n";                //Elemente werden der Liste hinzugefügt
                    
ausgabe.appendText(listeBilder[i]);
                    
                    var 
request:URLRequest = new URLRequest(listeBilder[i]);
                    var 
loader:Loader = new Loader;
                        
loader.contentLoaderInfo.addEventListener(Event.COMPLETEaddToArray);
                        
loader.load(request);

                        function 
addToArray(evt:Event) {
                            var 
image:Bitmap = new Bitmap(evt.target.content.bitmapData);
                            var 
container:MovieClip = new MovieClip();
                            
container.addChild(image);
                            
container.width 300;
                            
container.height 300;
                            
listeMC[i] = container;
                            
//listeMC[i].x = i*10;
                            //listeMC[1].visible = false;
                            
addChild(listeMC[i]);
                        }
                }
        } 
Als ich etwas mit dem hier wegkommentierten .visible gespielt habe, ist mir aufgefallen, dass immer nur das erste Bild (0.jpg) angezeigt wird. Hat jemand eine Ahnung warum?! Ich versteh das einfach nicht mehr...

Das 2te Problem ist dass ich die MCs nun, da ich sie ja per addChild() ge"addet" habe nicht mehr ansprechen kann, hat dafür jemand einen Lösungsvorschlag?

BITTE UM HILFE, IST WIRKLICH DRINGEND
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.
peat-ar ist offline   Mit Zitat antworten
Alt 25-08-2010, 17:00   #8 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
also der code ist schon sehr sehr böse, du hast eine funktion in der ein schleife sitzt in der wiederum anzahlBilder mal die funktion addToArray definiert wird. das kann nur schiefgehen

grundsätzlich bevorzuge ich die methode ein bild nach dem anderen zu laden weil es sonst sehr schwer wird sich den kram wieder zurecht zu sortieren.

aufbau würde grob so aussehen...

ActionScript:
  1. bilderPfade = ["0.jpg", ...]
  2. bilderObjekte = []
  3. bilderGeladen = 0
  4.  
  5. konstruktor {
  6.    ladeBild()
  7. }
  8.  
  9. ladeBild {
  10.    tempLoader = new loader
  11.    tempLoader.load --> bilderPfade[bilderGeladen]
  12.    tempLoader.callback --> bildFertig
  13.    bilderObjekte.push(tempLoader)
  14. }
  15.  
  16. bildFertig {
  17.    bilderGeladen++
  18.    if bilderGeladen < bilder.length : ladeBild()
  19.    else alleFertig()
  20. }
  21.  
  22. alleFertig {
  23.    // alle bilder anzeigen
  24.    for each (bild in bilderObjekte) addChild(bild)
  25. }

am besten als extra klasse erstellen und von dem php loading trennen. bilderPfade kannst du dann ja auch als parameter dem konstruktor übergeben.

Geändert von ING (25-08-2010 um 17:05 Uhr)
ING ist offline   Mit Zitat antworten
Alt 25-08-2010, 18:29   #9 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Mir geht das auch wahnsinnig auf die Nerven, aber da ich mich mit externen as Dateien nicht so gut auskenne und mir immer wieder irgendeine Zugriffsverweigerung (Typ: static oder was weiß ich) aus mir unerklärlichen Gründen angezeigt wurde hab ichs mal einfach so "verschachtelt" gemacht. Hinzu kommt dass ich der Code einfach so gewachsen ist (dachte am Anfang nicht dass es überhaupt so viel wird :S )

Danke vielmals für den Aufbau (wollte das dann nachher eh umskripten, dass ein Bild nach dem anderen geladen wird), sieht ziemlich "funktionierend" aus. ^^
Eine Frage habe ich dazu jedoch: kann ich die einzelnen Bilder denn auch noch per AS ansprechen, wenn ja wie? (Ziel ist dann so eine Art Slide-Show, die einfach alle Bilder aus einem bestimmten Ordner in einer Endlosschleife "iterativ" abspielt ^^)

Und noch eine letzte Frage: Was ist das mit dem Konstruktor / was sollte ich da genau einsetzen? :schäm:

Aber auf jeden Fall noch mal ein großes Dankeschön
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.
peat-ar ist offline   Mit Zitat antworten
Alt 25-08-2010, 18:58   #10 (permalink)
Animateur
 
Benutzerbild von Master Wu
 
Registriert seit: Jan 2003
Ort: MZ
Beiträge: 1.536
Zitat:
Zitat von peat-ar Beitrag anzeigen
BITTE UM HILFE, IST WIRKLICH DRINGEND
Sowas find ich einfach nur unverschämt ...
__________________
there is no way to happiness, happiness is the way - flashgames
Master Wu ist offline   Mit Zitat antworten
Alt 25-08-2010, 19:36   #11 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
Zitat:
Zitat von peat-ar Beitrag anzeigen
Eine Frage habe ich dazu jedoch: kann ich die einzelnen Bilder denn auch noch per AS ansprechen, wenn ja wie?
in meinem beispiel von oben stehen alle bildhandles in dem array bilderObjekte.

Zitat:
Zitat von peat-ar Beitrag anzeigen
Und noch eine letzte Frage: Was ist das mit dem Konstruktor / was sollte ich da genau einsetzen? :schäm:
naja, das was du halt an infos brauchst, in deinem fall wäre es das array das du aus den php daten erstellt hast und die bildpfade enthält. wenn du die klasse zb. ExtImageLibrary nennst würde der konstruktor zb. so aussehen...

ActionScript:
  1. public function ExtImageLibrary(_bilderPfade:Array) {
  2.    bilderPfade = _bilderPfade; // array übernehmen
  3.    ladeBild(); // ladevorgang beginnen
  4. }

das beispiel von oben ist aber nur pseudo code der den aufbau demonstrieren soll, wirklich schreiben musst du es schon noch selbst, egal wie eilig es du hast.

Zitat:
Zitat von Master Wu Beitrag anzeigen
Sowas find ich einfach nur unverschämt ...
solange er "bitte" sagt aber stimmt schon, das so fett zu schreiben ist nicht die feine art und führt in der regel zum gegenteiligen effekt aber weil ich nun schon dabei war wollt ich ihn nich hängen lassen...
ING ist offline   Mit Zitat antworten
Alt 25-08-2010, 20:29   #12 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Weiß schon dass das nicht die feine Art ist, aber das ist ein Projekt für meinen Ferialjob und langsam sollte ich etwas vorweisen können. Wenn ihr jetzt sagt, dass ich mir dann nicht so was (für mich vllt zu) schweres aussuchen soll, dann habt ihr wahrscheinlich Recht, aber das wurde halt grad auf der HP von denen gebraucht und ich dachte ich könnte mir halt das nötige Wissen dazu noch aneignen, aber jetzt war ich ganz verzweifelt weil es keinen Fehler angezeigt hat und trotzdem nicht so funktioniert hat, wie es hätte sollen
Aber danke fürs trotzdem erklären und habt doch bitte Verständnis
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.
peat-ar ist offline   Mit Zitat antworten
Alt 26-08-2010, 09:59   #13 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Ich bin und bleibe wohl irgendwie ein Problemkind...

Hab jetzt ein neues Projekt erstellt, mit 2 AS-Dateien (PHPLoading und ExtImageLibrary, im Anhang ist das Projekt, halt ohne .fla, weil ich da nur die Klassen ge"imported" habe)

PHPLoading holt sich wie der Name sagt die Variablen (atm noch die Variable) des PHP Skriptes, da hab ich einfach den Code bis zur for-Schleife übernommen, da der eigentlich eh funktioniert hat (die for-Schleife erstellt jetzt nur noch die einzelnen Elemente für den Array der die Dateinamen speichert).

ExtImageLibrary habe ich nach ING's Vorschlag gemacht, nur dass ich dem Konstruktor keine Parameter mitgebe, sondern einfach die ladeBild() Funktion initiiere (Jetzt zeigt es mir aber einen Fehler an wenn ich auf die in PHPLoading als public definierten Variablen "bilderPfade" und "anzahlBilder") und außerdem habe ich die Zeile
PHP-Code:
bilderObjekte.push(tempLoader
in die Funktion bildFertig() verschoben (weil Sachen ja erst gepushed werden lönnen, wenn sie geladen sind, oder?). Weiterhin habe ich die Funktion bildFertig() etwas erweitert, da ich nicht wusste, welchen Typ der "Platzhalter" namens "bild" in der "for each in"-Schleife annehmen sollte.

Übrigens kennt er auf einmal die Eigenschaften "evt" bei "evt.target.content.bitmapData" und "addChild()" in der "for each in"-Schleife nicht mehr, ich habe aber doch so ziemlich alles ge"imported"

Letztere AS-Datei sieht jetzt folgendermaßen aus (es sind beide Klassen + PHP Skript + Ordner mit 2 Testbildern in der slideShowAlpha.zip, zum Testen bräuchte man natürlich nen PHP-fähigen Server)

PHP-Code:
package  {
    
    public class 
ExtImageLibrary {
        
        
import flash.events.*;
        
import flash.display.*;
        
import flash.net.*;
        
import flash.utils.*;
        
        
// Public Properties:
        
public var bilderObjekte:Array = new Array();
        
// Private Properties:
        
var bilderGeladen:uint 0;
    
        
// Initialization:
        
public function ExtImageLibrary() {
            
ladeBild();
        }
    
        function 
ladeBild() {
            var 
tempLoader:Loader = new Loader();
            
tempLoader.load(new URLRequest(bilderPfade[bilderGeladen]));
            
tempLoader.contentLoaderInfo.addEventListener(Event.COMPLETEbildFertig);
        }
        
        function 
bildFertig() {
            var 
tempBild:Bitmap = new Bitmap(evt.target.content.bitmapData);
            var 
tempHalter:MovieClip = new MovieClip();
            
tempHalter.addChild(tempBild);
            
            
bilderObjekte.push(tempHalter);
            
            if (
bilderGeladen anzahlBilder) {
                
ladeBild();
            }
            
            else {
                
alleFertig();
            }
            
            
bilderGeladen++;
            
        }
        
        function 
alleFertig() {
            for 
each (var bild:MovieClip in bilderObjekte) {
                
addChild(bild);
            }
        }
        
    }
    

Und nochmal, tschuldige für vorher war nicht so gemeint
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.

Geändert von peat-ar (26-08-2010 um 12:11 Uhr)
peat-ar ist offline   Mit Zitat antworten
Alt 26-08-2010, 12:58   #14 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
also das sieht doch schon mal garnicht so schlecht aus, bis auf ein paar kleinigkeiten eigentlich sollten dir etliche fehler geworfen werden, falls nicht wird die klasse garnicht erst initalisiert.

gröbstes problem ist, wie du schon ahntest, das array bilderPfade, dieses existiert garnicht in der klasse, somit kann garnichts geladen werden weil die klasse keine bilderpfade hat die es laden kann.

den ganzen kram mit den movieclips brauchst du eigentlich auch nicht denn du kannst auch direkt das loader objekt mit addChild hinzufügen, so verhaspelst du dich sonst nur sehr schnell udn erstellst unnötig viele überflüssige objekte (was sollte das mit dem bitmap?), solange du nur bilder anzeigen willst hat das keinerlei nachteile. das pushen kannst du auch direkt im ladeBild() machen, denn das loader objekt existiert ja bereits auch wenn es noch leer ist, das musst du sogar weil du sonst nicht mehr an das loader objekt rankommst weil es ja eine temporäre variable in ladeBild() ist (daher der variablen name tempLoader ).

weitere fehler:
  • die import anweisungen kommen ins package, nicht in die klasse
  • die typisierungen der funktionen fehlen
  • die klasse sollte sprite extenden, sonst kannst du nichts anzeigen lassen
  • funktionen die von einem listener aufgerufen werden erwarten immer einen parameter
also nochmal von anfang an, du lädst die bilderpfade und legst sie in einem array ab, achte dabei darauf das es nur der bildpfad ist, also nicht wie oben mit einem \n oder ähnlichem!

sind die pfade geladen und in einem array abgelegt erstellst du ein ExtImageLibrary objekt und übergibst ihm das array, hier nochmal die überarbeitete klasse:

ActionScript:
  1. package  {
  2.  
  3.     import flash.events.Event;
  4.     import flash.display.Sprite;
  5.     import flash.display.Loader;
  6.     import flash.net.URLRequest;
  7.           
  8.     public class ExtImageLibrary extends Sprite {
  9.  
  10.         public  var bilderObjekte:Array = new Array();
  11.         public  var bilderPfade:Array;
  12.         public  var bilderAnzahl:uint;
  13.         private var bilderGeladen:uint = 0;
  14.  
  15.         public function ExtImageLibrary(_bilderPfade:Array) {
  16.             bilderPfade  = _bilderPfade;
  17.             bilderAnzahl = bilderPfade.length;
  18.             if (bilderAnzahl) ladeBild();
  19.         }
  20.  
  21.         private function ladeBild() : void {
  22.             var tempLoader:Loader = new Loader();
  23.             tempLoader.load(new URLRequest(bilderPfade[bilderGeladen]));
  24.             tempLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, bildFertig);
  25.            
  26.             bilderObjekte.push(tempLoader);
  27.         }
  28.        
  29.         private function bildFertig(e:Event) : void {
  30.             bilderGeladen++;
  31.            
  32.             if (bilderGeladen < bilderAnzahl) {
  33.                 ladeBild();
  34.             } else {
  35.                 alleFertig();
  36.             }
  37.         }
  38.        
  39.         private function alleFertig() : void {
  40.             var pos:int = 0;
  41.             for each (var bild:Loader in bilderObjekte) {
  42.                 addChild(bild);
  43.                
  44.                 bild.x = pos;
  45.                 pos += bild.width + 5;
  46.             }
  47.         }
  48.     }
  49. }
diese klasse ist getestet und funktioniert, hab die funktion alleFertig etwas angepasst damit die bilder nebenenander angezeigt werden, diese funktion kannst du natürlich nach belieben bearbeiten, sie stellt quasi dein "finishing" dar. musst gucken ob du das anordnen der bilder direkt hier durchführst oder später von außen. kannst natürlich auch eine weiter funktion wie bilderPlatzieren() erstellen die du dann später ausführst und ihr die entsprechenden parameter übergibst die du zum anordnen brauchst, wie zb. anzahl der bilder pro spalte usw.

das erstellen eines ExtImageLibrary objekts würde dann zb. so aussehen:

ActionScript:
  1. // array mti den bilderpfaden
  2. var meineBilder:Array = ["bild001.jpg", "bild002.jpg", "bild003.jpg", "bild004.jpg"];
  3.  
  4. // library erstellen und der anzeigeliste hinzufügen
  5. var bilderLibrary:ExtImageLibrary = new ExtImageLibrary(meineBilder);
  6. addChild(bilderLibrary);
alle bilder sind nun in dem ExtImageLibrary objekt enthalten (wie eine sammlung) und du kannst ggf. auch von außen weiter auf jedes einzelne bild über die bilderObjekte eigenschaft zugreifen.

Geändert von ING (26-08-2010 um 13:10 Uhr)
ING ist offline   Mit Zitat antworten
Alt 26-08-2010, 16:30   #15 (permalink)
questions++;
 
Registriert seit: Jul 2010
Beiträge: 51
Das mit den nicht existierenden Variablen habe ich mittlerweile so gelöst dass ich sie von der PHPLoading Klasse per Funktion mit return an die .fla übergebe und die dann eine Funktion getVars in der anderen .as Datei mit Parametern füttert. Die ExtImageLibrary-Funktion bleib jetzt einfach leer, das übernimmt die getVars-Funktion
PHP-Code:
public function getVars(_anzahlBilder:uint) {
[for-
Schleife die aus anzahlBilder den Array mit Dateinamen erstellt];
anzahlBilder /*schon innerhalb der Klasse definiert*/ _anzahlBilder
ladeBild

Der "ganze Kram" hat sich so angesammelt, weil ich einfach alles was ich so im Internet gefunden habe ausprobiert habe, dann wurde irgendwann einmal ein Bild angezeigt und seitdem habe ich dieses ganze MC und Bitmap Zeugs immer mitgenommen ^^

import Anweisungen hab ich verschoben, scheint Flash aber keine Probleme gemacht zu haben (bin aber immer dankbar für Verbesserungsvorschläge an meinem Programmierstil, soweit man das denn so nennen darf )

Wenn du mit Typisierung das in den Klammern meinst (evt:Event), das habe ich schon ausgebessert (nach stundenlanger Suche :S)

Wie übergibst du der ExtImageLibrary Funktion eigentlich Parameter (das ist doch so eine Art von Funktion die automatisch gestartet wird oder? Ich hoffe das geht mit meiner oben genannter Lösung auch in Ordnung)?

Ich traus mich nach einer so perfekten & ausführlichen Erklärung des Sachverhalts (der bei dir auch noch funktioniert) schon gar nicht mehr sagen, aber jetzt steht da bei der Ausgabe: TypeError: Error #2007: Parameter dard nicht 'null'sein. (und halt noch wo er aller 'null' ist). Dachte mir ist doch eh ganz logisch, keinen Zugriff auf PHP-Resultat -> "anzahlBilder" bleibt 'null', allerdings zeigt es im Browser (am Server) einfach ein weißes Feld. Da kommt nichts :S

Wegen dem ExtImageLibrary objekt: das muss ich erstellen wenn ich die Bilder im Nachhinein ansprechen will? (Idee der simplen Animation ist dass einfach alle Bilder übereinander geworfen werden und dann immer das oberste per AlphaFade langsam ausgeblendet wird, wenn ich beim untersten Bild angekommen bin, dann werden einfach wieder alle AlphaWerte auf 1 gesetzt, das ist jetzt natürlich nicht als indirekte Auffordung zum Programmieren zu verstehen, möchte nicht gaanz so unverschämt sein , wenn ich alle Bilder übereinander habe und sie ansprechen kann, dann freu ich mich wie 'n Frosch )

Da die slideShowAlpha.zip 0,4Kb zu groß ist halt nur mit einem Bild -.-

PS.: Wenn ich PayPal oder ne Kreditkarte hätte würde ich dir was spenden, aber in Österreich kriegt man das ganze Zeug erst ab 18
__________________
Ich spreche Deutsch, Englisch, Französisch, Latein und Russisch... nur mit AS will's nicht so ganz hinhauen.
peat-ar ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
auslesen, bilder laden, dynamisch, extern laden

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[AS3] Loading multiple SWFs & A closer look into load-timings figure8 Stuff 2 16-02-2010 12:22
IRC Client mit External API PHPler ActionScript 3 13 12-02-2009 15:15
load images jörgel Flash MX 6 29-08-2005 12:52
Hilfe !! Ich bin zu blöd -- load images ninja ActionScript 1 1 27-08-2002 12:34


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

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


Copyright ©1999 – 2012 Marc Thiele