• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-01-2010, 13:00   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 30
onLoadComplete Variable bei Funktionsaufruf übergeben?

Hallo,

ich habe einen Loader der mit ein Bild läd, in etwa so:

Code:
function setImage(contentXML:XML,id:int):void{
	var loader:Loader = new Loader();
	contentWrapper.addChild(loader); 
	var url:String = "../" + contentXML.image[id].text();
	var urlReq:URLRequest = new URLRequest(url);  
	loader.load(urlReq);
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadComplete);
        var myDelay = contentXML.image[id].attribute("delay");
}
Soweit so gut. Nachdem das Bild aber fertig geladen ist, soll es mit einer individuellen Verzögerung eingeblendet werden, der Wert für "myDelay" steht aber nur in der Funktion setImage() zur Verfügung. Wie bekomme ich nun die Übergabe zur Funktion imgLoadComplete() hin?

Code:
function imgLoadComplete(e:Event){
	TweenMax.from(e.target.content, 0.2, {alpha:0,delay:myDelay});
}
Vielen Dank schonmal für Hinweise und Ideen!
ThinkPad ist offline   Mit Zitat antworten
Alt 11-01-2010, 13:13   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 546
Schau mal hier, das war ein ähnliches Problem:
Variable aus Schleife in EventListener übergeben

Wurde gelöst, indem man den Wert in einem Dictionary speichert mit dem loader.contentLoaderInfo (ist gleich deinem späteren e.target) als Schlüssel.
joeydee ist offline   Mit Zitat antworten
Alt 11-01-2010, 14:19   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 30
Hey joeydee,

vielen Dank. Das funktioniert, Danke sehr!
Aber: Ist das wirklich "the way to do it"? Da gibt's keine elegantere Version?
ThinkPad ist offline   Mit Zitat antworten
Alt 12-01-2010, 08:10   #4 (permalink)
Alter User
 
Benutzerbild von Linowitch
 
Registriert seit: Nov 2006
Ort: München
Beiträge: 484
Ich würde das so machen.
ActionScript:
  1. package
  2. {
  3.     import flash.display.Loader;
  4.    
  5.     public class DelayLoader extends Loader
  6.     {
  7.         //--------------------------------------------------------------------------------
  8.        
  9.         private var _delay:Number;
  10.        
  11.         //--------------------------------------------------------------------------------
  12.        
  13.         public function DelayLoader()
  14.         {
  15.             super();
  16.         }
  17.        
  18.         //--------------------------------------------------------------------------------
  19.         // getter and setter
  20.         //--------------------------------------------------------------------------------
  21.        
  22.         public function set delay(value:Number):void { this._delay = value; }
  23.        
  24.         public function get delay():Number { return this._delay; }
  25.        
  26.         //--------------------------------------------------------------------------------
  27.     }
  28. }
ActionScript:
  1. function setImage(contentXML:XML,id:int):void{
  2.     var loader:DelayLoader = new DelayLoader();        // hier geändert
  3.     contentWrapper.addChild(loader);
  4.     var url:String = "../" + contentXML.image[id].text();
  5.     var urlReq:URLRequest = new URLRequest(url)
  6.     loader.load(urlReq);
  7.     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadComplete);
  8.         loader.delay = contentXML.image[id].attribute("delay");         // hier geändert
  9. }
ActionScript:
  1. function imgLoadComplete(e:Event){
  2.     TweenMax.from(e.target.content, 0.2, {alpha:0,delay:e.target.delay});    // hier geändert
  3. }
__________________
Gruß Linowitch
Wer glaubt gut zu sein hat aufgehört besser zu werden!

Website
Linowitch ist offline   Mit Zitat antworten
Alt 12-01-2010, 22:24   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 30
DAS ist mal schick! Das versuche ich. 1000 Dank!
ThinkPad ist offline   Mit Zitat antworten
Alt 13-01-2010, 08:05   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 546
Ach so - ich dachte eine überladene Klasse wäre sowieso obligatorisch wenns um erweiterte Eigenschaften/Methoden geht, aber in dem Fall zu unhandlich für einen einzelnen anzuhängenden Wert, denn das war auch Thema in dem von mir verlinkten Thread :-)

*Achtung, persönliche Meinung - kein Bedarf für Grundsatzdiskussion ;-) *
Ich persönlich finds gerade für spezielle/einmalige Zwecke mit Dictionary nach wie vor handlicher. Und wenn schon Klasse: getter/setter würde ich nur verwenden wenn der Wert noch geprüft/verändert wird oder andere Eigenschaften der Klasse direkt beeinflusset. Ansonsten reicht auch einfach: public var delay:Number. Ist in meinen Augen eine KISS-Frage vs. "totdesignen".
joeydee 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
leeren Parameter übergeben bei Funktionsaufruf sara11 ActionScript 3 8 12-08-2008 10:38
Funktionsaufruf über eine String-Variable tasovi ActionScript 2 2 23-11-2006 17:54
Flash Syntaxproblem bei Funktionsaufruf mit Variable Kai.S ActionScript 2 7 07-06-2006 00:56
Funktionsaufruf ohne direkten Funktionsaufruf? brabathehut Flash 8 8 28-11-2005 18:47
Funktionsaufruf über eine Variable? JuL! ActionScript 1 2 22-11-2004 22:58


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele