Übergabe von Werten von einer Funktion zur anderen

mama-karl

Mitglied
Ein Servus,

Ach ich liebe ja dieses Forum. Bisher konnte ich nur wenig wissen einstreuen,
aber ich mache mich so langsam.
Hier nun ein aktuelles Problem. Ich lege funktionen inzwischen gern in der
Zeitleiste ab, was das abstimmen des Actionscrpts ungemein erleichtert.

Hier ist es nun so, dass eine Reihe von Buttons ähnliche funktionen auslösen
und sich nur in Details voneinander unterscheiden. Allen gemein ist, dass sie
eine Animation auslösen an dessen Ende eine SWF geladenen werden soll,
welche SWF soll dann in der Buttonbelgeung stehen.


PHP:
port_out = function(){

// Hier wird die Animation mit der Tween-Class aufgerufen-die ist immer gleich.
import mx.transitions.Tween;
import mx.transitions.easing.*;  

// Hier wird n Objekt erstellt und die Animation angewiesen. 
//Das Objekt ist notwendig, um das Ende der Animation anzusteuern
var port_end:Object = new Tween (portfolio, "_rotation", Strong.easeIn, 0, 180, 0.8,true);
	port_end.onMotionFinished = function(){

//Das Ende der Animation soll dann eine SWF aufrufen, 
//welche soll im Button stehen.
	}
	}

	
// Ansteuerung des Buttons
portfolio.butt_13.butt.onRelease = function(){
	port_out();
//Nach dem Aufruf der obigen Funktion soll nun die Anweisung lade SWF 
//stehen. Jeder Button der hier stehen könnte soll nach der funktion
// port_out() eine andere, ihm spezielle SWF aufrufen.
	}

Das Problem ist wie gesagt, dass die Steuerungen voneinader abhängig sind
und die Frage welche URL geladen werden soll an die Funktion ganz oben
übergeben werden soll.

Wer kann mir da helfen?!
:confused:
Ich danke im voraus!
 
Hi,

wenn ich das richtig sehe, müsste das so lauten:
Code:
import mx.transitions.Tween; // Importe lieber am Anfang
import mx.transitions.easing.*;  // und nur einmal!

var dest_obj = null; // späteres Zielobjekt merken

function port_out(obj) { // wir übergeben das Zielobjekt
    dest_obj = obj; // und weisen es der dauerhaften Variable zu
    var port_end:Object = new Tween (portfolio, "_rotation", Strong.easeIn, 0, 180, 0.8,true);
    port_end.onMotionFinished = function(){
        dest_obj.machwas(); // hier können wir dann darauf zugreifen!
    }
}

    
// Ansteuerung des Buttons
portfolio.butt_13.butt.onRelease = function(){
    port_out(ein_beliebiger_mc);
}

Gruß
.
 
Sers,

Danke für die Antwort. Ich klamüser das mal auseinander und hab da noch
ein paar Fragen, um Dein Script zu verstehen.

Die Klasse zuoberst zu importieren, ist sicherlich schlau. hab ich dann auch
gleich gemacht.

Was bedeutet die Zeile
PHP:
var dest_obj = null; // späteres Zielobjekt merken
…genau? Ich etablier ne Variable und weise ihr ein Wort zu?

Dann komtm eine Funktion, die ' port_out ' heisst, doch was beudetet ' (obj) '?

PHP:
  dest_obj.machwas(); // hier können wir dann darauf zugreifen!

' dest_obj ' ist wahrscheinlich mein leerer Target in den geladen wird?

und was passiert genau in dem button?
PHP:
    port_out(ein_beliebiger_mc);
Hier würde ja dann ein mc aus der Library oder so übergeben. Ich würde bei
den Buttons aber gerne externe SWFs angeben, die dann an die funktion port_out
übergeben werden, genauer: nach Ablauf des Tweens in dem der clip portfolio
gedreht wird, soll ja eine externe SWF geladen werden, die im Button-Script
angewiesen wurde.

Danke für Deine Hilfe soweit, aber ich brauch noch n paar Erklärungen…
:-)
 
Hi,

Ich etablier ne Variable und weise ihr ein Wort zu?
Du legst das Objekt, das nach dem Tweening manipuliert werden soll (wird wohl ein MC sein) in einer Zeitleistenvariable ab; dadurch kannst Du von überall aus darauf zugreifen. Erstmal bekommt sie den Wert null, da noch kein Zielobjekt definiert ist.

Dann komtm eine Funktion, die ' port_out ' heisst, doch was beudetet ' (obj) '?
Na, das ist Deine Funktion, die Du auch in Deinem Script verwendest. Ich habe sie zusätzlich nur um einen Parameter erweitert: So kannst Du ihr einen Wert übergeben, und das wolltest Du doch?

und was passiert genau in dem button?
Ohne genau zu wissen was Du eigentlich übergeben willst, kann ich das natürlich nicht sagen. Ich bin davon ausgegangen, dass nach dem Klick (und nach dem Tween) etwas mit einem bestimmten MovieClip passieren soll: Diesen Clip kannst Du nun der Funktion port_out übergeben.


Gruß
.
 
Danke vielmals,

So ganz auf festen Beinen steh ich noch nicht, aber wenn ichs nun
komplett checken will, klamüser ichs nochmal so auseinander.
Eigentlich wollte ich etwas einfacheres, nämlich eine externe SWF
nach einer Animation laden lassen. Welche externe SWF geladen
werden sollte, steht genauer im Button.

So sieht's gerade aus:
PHP:
stop();
	import mx.transitions.Tween;
	import mx.transitions.easing.*; 
	//destiny = null;
	
port_out = function(){
	var port_end:Object = new Tween (pofo, "_rotation", Strong.easeIn, 0, 180, 0.8, true);
	port_end.onMotionFinished = function(){
		hier.loadMovie(destiny);
	}
	}

	
//---Buttons, Programmierung
pofo.butt_13.butt.onRelease = function(){
	port_out();
	destiny = "test.swf";
	}

Ich bin mir nicht genau sicher, aber deine Hilfe kann/macht
nochmal was anderes. Auf jeden Fall, wär ich ohne Deine Hilfe
nicht darauf gekommen die URL Anweisung einfachmal gegen
ne Variable auszutauschen, die der Button etabliert!
DankDir!
 
Hi,

mein Vorschlag macht eigentlich genau das selbe, bloß dass bei Dir die Zielvariable "destiny" schon beim Buttonklick festgelegt wird - bei mir wird sie der Funktion "port_out" üergeben und dort erst gespeichert. ;)

Ich würde Dir dennoch raten, die Variable (destiny) zuerst irgendwo auf der Zeitleiste zu definieren (z.B. mit "null" wie bei mir) - es ist stilistisch besser und macht dem Betrachter sofort klar, dass es sich nicht um eine lokale Variable handelt.

Gruß
.
 
Zurück