Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-12-2004, 14:01   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 18
Post Movieclip mit Text und Bildern dynamisch erstellen...

Habe folgendes Problem mit Flash MX:

Habe eine Combobox in der Werte ausgewählt werden können.
Sobald der Wert sich dort ändert soll ein Scrollpane mit Text und Bildern gefüllt werden.
Bin soweit das ich einen MovieClip brauche der gescrollt wird. In diesem werden die Textfelder dynamisch erstellt.
Zusätzlich brauche ich für jedes Bild wieder einen MC um das Bild zu positionieren.

Nun mein Problem:

Wenn ich das erste Bild lade kann man das mit
loadMovie("meinJPEG", meinMC) tun.
Soweit so gut, nur gibt er mir dann Höhe 0 zurück. Also das ganze noch mit onEnterFrame umgeben. Dann wird das Bild zwar geladen aber die anderen Anweisungen werden zu früh ausgeführt, es wartet also nicht bis das Bild fertig geladen ist (ist aber von Nöten da ich die Höhe brauche).
In der Textdatei die durchlaufen wird steht text und Pfade für die Bilder.
Wie schaffe ich es das das Laden vom 1. Bild erst abgeschlossen wird dann wieder Text, dann das nächste Bild usw.

while (position < ende) {
this.meinMc.createTextField(.......);
//dann Text und alles einfügen und nun ein Bild einfügen.
this.meinMc.createEmptyMovieClip("bild",....);
this.meinMc.bild.loadMovie("jpeg");
this.meinMc.onEnterFrame = function(){
//Berechnungen ob fertig
}
position = aktpos_imText;
}

Hat jemand eine Idee? Kann leider keinen kompletten Quelltext reinstellen da dieser etwas chaotisch im Moment aussieht.
marsel ist offline   Mit Zitat antworten
Alt 16-12-2004, 16:00   #2 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
Zitat:
Zitat von marsel
Nun mein Problem:

Wenn ich das erste Bild lade kann man das mit
loadMovie("meinJPEG", meinMC) tun.
Soweit so gut, nur gibt er mir dann Höhe 0 zurück. Also das ganze noch mit onEnterFrame umgeben. Dann wird das Bild zwar geladen aber die anderen Anweisungen werden zu früh ausgeführt, es wartet also nicht bis das Bild fertig geladen ist (ist aber von Nöten da ich die Höhe brauche).
In der Textdatei die durchlaufen wird steht text und Pfade für die Bilder.
Wie schaffe ich es das das Laden vom 1. Bild erst abgeschlossen wird dann wieder Text, dann das nächste Bild usw.....Hat jemand eine Idee? Kann leider keinen kompletten Quelltext reinstellen da dieser etwas chaotisch im Moment aussieht.
Das musst du wahrscheinlich ein bisschen anders organisieren mit funktionen und LoadVars.
So zum Beispiel:

PHP-Code:
setBilder = function (pfadfolderbildmc) {
    
pfad.bild.loadMovie(folder);
    
pfad.onEnterFrame = function() {
        
// hier könntest du wieder eine neue Bild- und Textladeaktion starten
        
if (this[bildmc].getBytesTotal() == this[bildmc].getBytesLoaded() && this[bildmc].getBytesLoaded()>20) {
            
trace("Bild geladen. Höhe = "+this[bildmc]._height);
            
delete this.onEnterFrame;
        }
    };
};
ladeTexte = function (pfadtextnamebildmc) {
    
// trace(pfad);
    
var loadText = new LoadVars();
    
loadText.onLoad = function(status) {
        if (
status) {
            
// ladevorgang war erfolgreich
            
info.text this.message;
            
setBilder(pfadthis.pfadbildmc);
        } else {
            
info.text "Ladefehler...";
        }
        
delete loadText;
    };
    
loadText.sendAndLoad(textnameloadText"POST");
};
this.mc.createEmptyMovieClip("bild"10);
ladeTexte(this.mc"info.txt""bild"); 
Teste mal. Mach einen leeren Film, schmeiß das Script rein und lege an die gleiche Stelle wo du die swf testest einen Textfile 'info.txt' mit 'pfad=images/gl0-10.jpg&message=Dies ist der Beschreibungstext.' als Inhalt. Wobei du natürlich 'pfad=deinPfadZumJpeg' machst.
So kannst du das Ganze einigermaßen dynamisch gestalten.


Gruß
jeypack ist offline   Mit Zitat antworten
Alt 17-12-2004, 07:48   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 18
Super, dankeschön.
Klingt erst mal einleuchtend, mal sehen was ich nachher daraus mache.
Danke für die schnelle Antwort.

mfg Marcel
marsel ist offline   Mit Zitat antworten
Alt 17-12-2004, 12:02   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Weißwasser
Beiträge: 45
Ich würde das mit XML lösen. Da kannst Du Bilder ganz einfach zu Deinem Text mit einlesen. Die XML Datei gibt dabei nur die Pfade zu den Bildern an.
Außerdem kannst Du die XML Dateien mit PHP dynamisch aktualisieren.
PHP-Code:
<? php
$deineVariable 
"ordner\bild_01.jpg";

echo 
"<XML 1.0>/n";
echo 
"<Bilder>/n";
echo 
"<Bild name=urlaub bildURL=";
echo 
$deineVariable;
echo 
">Dein Text</Bild>/n";
echo 
"</Bilder>";

?>
Dann die XML Daten wie gehabt in Flash auslesen!
Den Text kannste auch noch in ne Variable schreiben!
Bitteschön.
__________________
flying high

Geändert von tona (17-12-2004 um 12:07 Uhr)
tona ist offline   Mit Zitat antworten
Alt 12-01-2005, 13:44   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 18
Das mit dem XML habe ich leider nicht hin bekommen da meine DB im Hintergrund nicht so wollte wie ich...
Hier jetzt noch mal meine Lösung zum laden der Bilder. Der Code von jeypack war für mich Gold wert.
Parse zu Beginn die Textdatei und Lese Pfade und Texte in ein Array. Bin ich mit dem Parsen fertig rufe ich meine "ersteFunktion" auf.
Habe mir also zwei Funktionen gebastelt. Allerdings ruft die eine Funktion die andere auf. In der ersten werden die Textfelder geladen, da dies ja nicht zeitabhängig ist.Ist also das Element ein Text wird die erste Funktion durch laufen.Ist das Element ein Bild wird die erste unterrbrochen und "setbilder" aufgerfuen. Ist das Bild fertig geladen wird wieder die erste aufgerufen und setzt beim nächsten Element fort. Bis alles fertig geladen ist.

Code:
ersteFunktion = function(index,laenge){
	for(var i=index;i<laenge;i){
			t_depth = 100+i;
			if(_global.advice_elements[i][0] == 0){
				mc.createTextField("text"+t_depth,t_depth,0,_global.y_pos,570,100);
				mc["text"+t_depth].wordWrap=true;
				mc["text"+t_depth].autoSize=true;//!
				mc["text"+t_depth].multiline=true;
				mc["text"+t_depth].text = _global.advice_elements[i][1];
				_global.y_pos += this.mc["text"+t_depth]._height;
				i++;
			}else{
				advice_path = _global.advice_elements[i][1];
				if(advice_path.length>1){
				i++;
				setBilder(advice_path,i,laenge);
				trace("Bitte");
				}
				i=laenge;
			}
			advice_text_sp.refreshPane();
	}	
}

 setBilder = function (folder,index,laenge) {
	mc.createEmptyMovieClip("bildmc"+index,index);
    mc["bildmc"+index].loadMovie(folder);
	trace(pfad+"   "+folder+"   "+bildmc);
    mc.onEnterFrame = function() {
        if (mc["bildmc"+index].getBytesTotal() == mc["bildmc"+index].getBytesLoaded() && mc["bildmc"+index].getBytesLoaded()>20) {
            trace("_global.y_pos + Bildhöhe "+_global.y_pos+" + "+mc["bildmc"+index]._height);
			
            delete mc.onEnterFrame;
			mc["bildmc"+index]._y = _global.y_pos;
			_global.y_pos += mc["bildmc"+index]._height;
			trace("Der Index in setBilder "+index);
			if(laenge >index){
				ersteFunktion(index,laenge);
			}else{
				trace("Stehe ich am Ende");
				advice_text_sp.refreshPane();
			}
        }
    };
};
Ist leider alles direkt aus dem Quelltext gerissen, aber vielleicht kann ja trotzdem jemand was mit anfangen und versteht was ich sagen will.

Vielen dank noch mal für die gute Hilfe.

Geändert von marsel (12-01-2005 um 14:00 Uhr)
marsel ist offline   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 01:28 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele