Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-10-2011, 06:14   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
Lade Bilder in MC-Instanzen

Ich versuch 6 Bilder aus einem Verzeichnis in seperate Instanzen von einem MovieClip zu laden . Das MC befindet sich in der Bibliothek und export für AS "jop"

Als ersetzes erzeuge ich in eine Schleife 6 Instanzen dieses MC und versuche zu jeder das neugeladene Bild zuzuweisen, leider wird nur das letzte Bild in der letzten Instanz geladen. Offensichtlich klappt die zuweisung nicht mit newMC .

Code:
public function load_gallery_ordner(){


		var current_adr:String="";		
		var ClassDefinition:Class = Class(getDefinitionByName(getQualifiedClassName(jop)));   
			
			
			
			for (var i:Number=1;i<=6;i++){  
			
				var newMC:MovieClip = new ClassDefinition;
               	                newMC.name = "test"+String(i); ;       
                                addChild(newMC);
				newMC.x=(i-1)*(newMC.width+20);
				newMC.y=i*30;
				
				
			
				current_adr="http://localhost/hp/bilder/"+i+".jpg";		
				var lid:Loader=new Loader();
        		        lid.load(new URLRequest(current_adr));	
	     		        lid.contentLoaderInfo.addEventListener(Event.COMPLETE,function (){   
								newMC.addChild(lid.content);  
								newMC.width=100;
								newMC.height=100;
													   
						                 });		
				
			}
			
			
}

Habs auch so versucht :


Code:
this["test"+i].addChild(lid.content);
Falls jemand ne Idee hat wäre ich dankbar ^^

Geändert von pixelsadist (26-10-2011 um 06:17 Uhr)
pixelsadist ist offline   Mit Zitat antworten
Alt 26-10-2011, 07:27   #2 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.866
paar Anmerkungen zu deinem Code:
- KlassenNamen fangen mit Grossbuchstaben an, also "Jop" statt "jop"
- namen sind imo in AS3 überholt, arbeite mit Referenzen
- solche durchnummerierten Namen sind weder sehr dynamisch, noch schnell; nimm Arrays
- erst Event-Listener hinzufügen, dann die Operation ausführen, die dieses Event auslöst
- dynamische funktionen als Event-listener sind nicht gut, die bekommst du (fast) garnicht mehr weg
- Event-Listener bitte wieder wegräumen, wenn sie nicht mehr benötigt werden, sonst können Objekte nicht gelöscht werden
PHP-Code:
var images:Array = [];
public function 
load_gallery_ordner()
{
    for (var 
i:int=0i<6; ++i){  
        var 
lid:Loader=new Loader();
            
lid.contentLoaderInfo.addEventListener(Event.COMPLETEimageLoaded);
            
        var 
mc:MovieClip = new jop();
            
mc.* (mc.width 20);
            
mc.= (i+1) * 30;
            
mc.addChild(lid);
        
addChild(mc);
        
images[i] = mc;
        
        
lid.load(new URLRequest("http://localhost/hp/bilder/"+ (i+1) +".jpg"));    
    }
}

function 
imageLoaded(e:Event):void
{
    
e.currentTarget.removeEventListener(e.typeimageLoaded);
    
    var 
lid:Loader e.currentTarget.loader;
    var 
mc:MovieClip lid.parent as MovieClip;
        
    if(
mc){
        
mc.width 100;
        
mc.height 100;
        
        
//im mc: lid durch lid.content ersetzen
        
mc.addChildAt(lid.contentmc.getChildIndex(lid));
        
mc.removeChild(lid);
    }

__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 26-10-2011, 15:46   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
ich würde es gern noch verstehen.
Punkt1: Also du erzeugst eine neue MC instanz in der du dem leader lid einfügst.
Code:
 mc.addChild(lid);
Punkt2: Sobald Bild fertiggeladen ist wird der listener gelöscht
Code:
e.currentTarget.removeEventListener(e.type, imageLoaded);
Punkt3: In der Funktion ImageLoaded erzeugst du einen neuen Loader und weist dem den alten zu:
Code:
var lid:Loader = e.currentTarget.loader;
Punkt4: und wandelst sein parent in ein MC um:
Code:
var mc:MovieClip = lid.parent as MovieClip;
Punkt5: danach ersetzt im mc den leader lid durch sein inhalt bzw sein Bild und löscht lid
Code:
 mc.addChildAt(lid.content, mc.getChildIndex(lid));
 mc.removeChild(lid);
Das Array machst du um den zufriff auf die jeweiligen MCs effizienter zu machen und um keine namen zu verwenden

Punkt 3 und 4 ist keine wirklich umwandlung sondern eher eine verknüpfung zu dem bereits existierendem mc und lid

Bei Punkt5 verstehe ich nicht warum lid durch lid.content ersetzt werden soll.

Gibt es eine möglichkeit abzufragen welche listener noch aktiv sind ?

Geändert von pixelsadist (26-10-2011 um 16:07 Uhr)
pixelsadist ist offline   Mit Zitat antworten
Alt 26-10-2011, 16:16   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.866
Punkt 1: ja, war für mich grad der einfachste Weg, jedem Loader einen MovieClip zuzuordnen, und umgekehrt.

Punkt 2: das meine ich mit "Event-Listener bitte wieder wegräumen, wenn sie nicht mehr benötigt werden". dieser spezielle Loader brauch den Event-Listener nicht mehr, da er kein weiteres Bild mehr laden wird. (das werden andere Loader sein)

Punkt 3: ich erzeuge hier keinen neuen Loader, sondern Event.currentTarget enthält das Objekt, dem ich mit addEventListener einen Event-Listener hinzugefügt habe.
also, ich suche nur den Loader raus, der gerade die Funktion aufgerufen hat. (wie der Absender bei einem Brief)

Punkt 3 und 4:
da wird nix umgewandelt, das wird gecastet, der Unterschied ist:
ich kann aus nem Huhn keinen Fisch machen, aber, wenn jemand sagt ich bring ein Tier zum essen mit, und ich weiss dass es ein Huhn ist, kann ich es auch wie ein Huhn behandeln (lecker hähnchenswchenkel in einer Paprika-Marinade, dazu Bratkartoffeln und etwas Gemüse, und es wird ein richtig leckeres Essen, aber ich bin etwas abgeschweift )
Also, Event.currentTarget ist vom Typ Object, und das kann so ziemlich alles sein (äquivalent zum Tier). wenn ich aber weiss, dass es ein Loader ist (Huhn), kann ich es auch als solchen behandeln, und alle Methoden eines Loaders benutzen.
(Hahnchenschenken geht schlecht wenn ich nen Fisch vor mir hab)

Punkt 5: der Loader hat seinen Dienst getan, der wird jetzt nicht mehr benötigt, ich brauch nur das Bild/die SWF die geladen wurde.
Ich hab Loader.content hinzugefügt, weil du das so gemacht hast. du kannst die beiden Zeilen genauogut weglassen, und den Content samt Loader in den Movieclip packen. dann solltest du dir aber bewusst sein, dass dort ein Loader im Movieclip steckt, und kein Bitmap (das ist im Loader drin).
Das macht dann einen Unterschied, wenn du bspw auf das BitmapData-Objekt des Bildes zugreifen willst, over MovieClip.play() bei einer nachgeladenen swf ausführen willst, ...


das Array ist in diesem Code bislang überflüssig. ich hab es nur eingebaut, damit du siehst, wie ich das meine, bzw wie das geht, und wo du dann die einzelnen Movieclips herholen kannst, wenn sie einmal erzeugt sind.
mit images hast du hier also immer eine Liste der Movieclips, incl Bilder, die gerade auf der Bühne sind.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 26-10-2011, 20:03   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
Code:
ich kann aus nem Huhn keinen Fisch machen, aber, wenn jemand sagt ich bring ein Tier zum essen mit, und ich weiss
 dass es ein Huhn ist, kann ich es auch wie ein Huhn behandeln (lecker hähnchenswchenkel in einer Paprika-Marinade, 
dazu Bratkartoffeln und etwas Gemüse, und es wird ein richtig leckeres Essen, aber ich bin etwas abgeschweift )
lol nur ganz wenig, dacht scho ich lese gleich ein rezept ^^

Geändert von pixelsadist (26-10-2011 um 20:05 Uhr)
pixelsadist 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
IE6 lade probleme bei bilder Tazmania Alternative Technologien 1 04-12-2007 21:50
lade 2 jpg in 2 mc vodan Flash MX 2004 1 19-10-2005 18:02
bilder lade problem bei mxmagazin cms silentblue Flash MX 0 11-03-2005 15:09
Wie lade ich Bilder mit Transparenz dynamisch Bigpet Flash MX 2 22-08-2003 11:19
Lade Problem mit Bilder ! Doctoradar Flash 4 und Flash 5 6 08-04-2002 23:01


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

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


Copyright ©1999 – 2012 Marc Thiele