webForumDet fria alternativet

anropa en ny funktion via en funktion?

Flash

3 svar · 324 visningar · startad av Klauz

Medlem sedan jan. 2005133 inlägg
Frågan#1

jag har en funktion som fadear in/ut objekt. jag skulle vilja ha en dynamiskt vald funktion som startar när fadingen är färdig. typ såhär:

function fade_object(object, alpha, nyfunktion) {
//fadear objekt on enter frame och sätter fading_complete till true
if(fading_complete == true) {
//här vill jag att den nya funktionen ska starta, men hur gör man?
}

}

//anropning av funktionen
fade_object(_root.objekt, 100, "min_andra_funktion()")

jag har testat med call och eval, men inte fått igång det..

mvh
Martin

Medlem sedan sep. 200412 inlägg
#2

Det ser ut som att funktionsnamnet som du skickar "dynamiskt" är en sträng. Du måste isf. använda this[] för att kunna köra call() på den.

I ditt fall skulle det alltså se ut så här:

function fade_object(object, alpha, nyfunktion) {

if(fading_complete == true) {

  this\[nyfunktion\].call('parametrar');
  // eller
  \_root\[nyfunktion\].call('parametrar');

}

}

Du ska heller inte ha med call-operatorn "()" i "min_andra_funktion()".

fade_object(_root.objekt, 100, "min_andra_funktion")

/Micke

Medlem sedan jan. 2005133 inlägg
#3

nu anropas funktionen som den ska! :)

men jag vill kunna skicka med dynamiska parametrar till den andra funktionen via parametrar i den första funktionen. typ såhär:

work.fadeObject(work,0,"build",area, color)

där "build" är funktionen och area + color är dynamiska parametrar som ska användas till "build"-funktionen.

function fade_object(object, alpha, nyfunktion, parameter1, parameter2) {

if(fading_complete == true) {

this[nyfunktion].call([parameter1]);

}

}

detta funkar inte med parametrarna, hur gör jag för att få med dem?

Medlem sedan sep. 200412 inlägg
#4

Det borde fungera genom att bara skicka med dem, precis som du gör i den första funktionen.
Där ska du inte ha några hakparenteser []

ex)

function fade_object(object, alpha, "nyfunktion", parameter1) {

if(fading_complete == true) {

this[nyfunktion].call(parameter1);

}

}

/Micke

268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)