..:: MX Studio Fóruns ::..: setTimeout -> como passar um metodo por agumento - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

setTimeout -> como passar um metodo por agumento

#1 User is offline   carloscarvalhar 

  • Group: Membros
  • Posts: 9
  • Joined: 13-April 05

Posted 11 July 2007 - 03:34 PM

Estou fazendo um frashi que vai ter chamadas com delays em alguns botões, por isso quero tornar algo como o AS abaixo todo em uma função:

CODE
//_root['home'].blendMode = "hardlight";


-> é essa a ação que quero fazer, mas dessa forma:


CODE
var my_timedProcess:Number = setTimeout(passaFuncao, 500, "home;blendMode;hardlight");
function passaFuncao(argumento) {
     var my_array:Array = argumento.split(";");
     _root[my_array[0]].blendMode = my_array[2];
}


PS: o código acima funciona OK

Na settimeout, os argumentos tem que estar separados por virgula, e não vi opção de passar o objeto.
home = MC
blendMode = Metodo
hardligth = parametro


Então, minha duvida é:

Como fazer isso:
CODE
_root[my_array[0]].blendMode = my_array[2];

virar algo assim:
CODE
_root[my_array[0]].my_array[1]= my_array[2];


ou seja, pegar o metodo por um dos argumentos da chamada ao timeout.

Alguem pode ajudar? Não faço amis ideia de como conseguir isso.


0

#2 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 11 July 2007 - 10:51 PM

Temo em dizer mas acho que isso não será possível ser feito, tentei aqui até usando o setProperty mas sem sucesso.

[]s
0

#3 User is offline   carloscarvalhar 

  • Group: Membros
  • Posts: 9
  • Joined: 13-April 05

Posted 12 July 2007 - 09:44 AM

mas como então a Macromedia (a Adobe) faz para passar os metodos em funções como settimeout ou setinterval?

essas duas funções, por exemplo, passam metodos como metodos (functiotns?)..portanto EXISTE SIM um jeito, só não faço ideia de qual huh.gif
0

#4 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 12 July 2007 - 10:03 PM

Nunca vi nenhum exemplo da Adobe ou Macromedia mostrando como fazer isso, os exemplos que eles usam e o que é possível ser feito com a passagem de parametros é usar eles como valores e não função como você deseja.

Fazer isso é possível:

AS
var my_timedProcess:Number = setTimeout(passaFuncao, 500, "home;50;hardlight");
function passaFuncao(argumento) {
   var my_array:Array = argumento.split(";");
   _root[my_array[0]]._alpha = my_array[2];
}
var my_timedProcess:Number = setTimeout(passaFuncao, 500, "home;50;hardlight");
function passaFuncao(argumento) {
var my_array:Array = argumento.split(";");
_root[my_array[0]]._alpha = my_array[2];
}


Com isso seu _root[my_array[0]] vai ficar com alpha de 50%. Da maneira que você deseja fazer não dá certo, tentei aqui várias coisas mas acho que não tem como fazer.

AS
var my_timedProcess:Number = setTimeout(passaFuncao, 500, "home;blendMode;hardlight");
function passaFuncao(argumento) {
   var my_array:Array = argumento.split(";");
   _root[my_array[0]].my_array[2] = 50;
}
var my_timedProcess:Number = setTimeout(passaFuncao, 500, "home;blendMode;hardlight");
function passaFuncao(argumento) {
var my_array:Array = argumento.split(";");
_root[my_array[0]].my_array[2] = 50;
}


[]s
0

#5 User is offline   carloscarvalhar 

  • Group: Membros
  • Posts: 9
  • Joined: 13-April 05

Posted 17 July 2007 - 04:41 PM

Olá,

eu vi essa função que parece passar um metodo....só não tenho certeza...
na real não a entedi muito bem, mas como compara os tipos, entre eles função, vc sabe se ajuda em algo?


valeu
t+

_global.setTimeout = function(a,b,c, args){
2 // for a basic function call:
3 if (typeof arguments[0] == "function"){
4 args = arguments.slice(2);
5 var ID, func = function(){
6 a.apply(null, args);
7 clearInterval(ID);
8 }
9 ID = setInterval(func, b, args);
10
11 // for an object method call:
12 }else{
13 args = arguments.slice(3);
14 var ID, func = function(){
15 a[b].apply(a, args);
16 clearInterval(ID);
17 }
18 ID = setInterval(func, c, args);
19 }
20 return ID;
21 }
22 _global.clearTimeout = clearInterval;
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




2 User(s) are reading this topic
0 membro(s), 2 visitante(s) e 0 membros anônimo(s)