Yo sigo en mis trece.....

A alguno de vosotros esto que voy a decir os sonar� a camino trillado hace
tiempo, pero es algo que yo andaba buscando porque me puede ahorrar muchas
l�neas de c�digo.

Las preguntas que realic� ayer van encaminadas hacia la generaci�n din�mica
de botones a traves de una funci�n.....
Eso es algo que ya esta superado, pero poco a poco me van surgiendo dudas,
como la eliminaci�n del bot�n cuando ya no es necesario y cosas as�.

Pero esta funci�n para generar botones era �til solo a medias, ya que a la
hora de aplicar acciones a estos botones ten�a que construir un enorme If
de comprovaci�n pasando unas n�mero para averiguar si olo que quer�a era
ejecutar una funci�n, un gotoAndPlay, gotoAndStop.... etc, etc....

Esta ma�ana he estado mirando como asignaban las ordenes los componentes
"bot�n" y he visto la acci�n "setClickHandler".... el caso es que lo he
desestimado porque seg�n he le�do solo funciona en componentes (?)

Despu�s he probado _root[funcion].apply().
Pasando como parametro el nombre de la funci�n a llamar, esa orden
funcionaba de maravilla, pero me encontr� en un problema cuando intentaba
ejecutar un gotoAndPlay, ya que esto al pasarle el nombre o n�mero de
fotograma al que ir como un parametro, no funcionaba ("
_root[funcion].apply(fotograma)")... �por qu�?... pues no lo s�, la verdad.

El caso es que mirando en la ayuda, he encontrado esta otra soluci�n:
<code>
mifuncion = eval(funcion)
mifuncion.call(_root, fotograma)
</code>

Pasando como parametro "funcion" y "fotograma", se ejecuta a la perfecci�n.

Obviamente se puede mejorar infinitamente y de hecho, ahora lo que quiero
es que puedas ejecutar m�s de una acci�n, por ejemplo:

<code>
_root.gotoAndPlay("inicio");
_root.elClip.anima.gotoAndPlay("quetemuevas");
llamadaFuncion();
</code>

para lo cual, imagino, que he de crear un bucle y desde la llamada a la
funci�n, decirle cuantas acciones ha de ejecutar ademas de pasarle los dos
parametros por acci�n...... si se os ocurre una idea mejor comentadlo por
favor......

Pego el c�digo este a medias de terminar para quien lo quiera usar o
contribuir a mejorarlo.....

Por ahora solo crea un bot�n, pero esto no es problema porque puedes
llamara a la funci�n tantas veces como botones necesites, nombres de
instancia, nombres para el campo de texto, pero esto tambi�n se puede
automatizar......... poco a poco.... claro que si alguien esta dispuesto...
adelante...... para mi supone un reto, pero es seguro que para muchos d
elos que aqu� est�is es prueba superada

Creo que no hace falta decir que el c�digo no es mio, es de Dragan con
ayudas de Joseba y Sixto....

Me falta implementar otras cositas, pero primero hay que soluciona esto
otro........

Perdonadme si he molestado a algu�en con mi ignorancia e ilusi�n recuperada

<code>

//----------------FORMATO BOTONES
function formateaBotones(textoBoton,x,y,funcion,fotograma){

      var tWidth = 150;
      var tHeight = 18;

      //---estilos

      var colorBorder = "0x990000";
      var colorBorderOver = "0x990000";
      var colorBackground = "0xCCCCCC";
      var colorBackgroundOver = "0xFFFFFF";
      var fontSize = 10;
      var fontType = "Verdana";
      var fontColor= "0x000000";
      var fontColorOver= "0xFFFFFF";
      var fieldAlign = "center"

      //---crear el clip contenedor
      this.createEmptyMovieClip("tHolder", 10);
      this.tHolder._x = x;
      this.tHolder._y = y;

      //---mostrar el cursor "mano"
      this.tHolder.useHandCursor = true;

      //---creacion de campo de texto
      this.tHolder.createTextField("myField", 1, 0, 0, tWidth, tHeight);

      //---el texto para el campo
      this.tHolder.myField.text = textoBoton;

      //---crear los estilos para campos
      tFieldStyle = new TextFormat();
            tFieldStyle.size = fontSize;
            tFieldStyle.font  = fontType;
            tFieldStyle.color= fontColor;
            tFieldStyle.align= fieldAlign;

      //---si hemos definido el fondo de la caja
      if (colorBackground != undefined){
                  this.tHolder.myField.background = true;
                  this.tHolder.myField.backgroundColor = colorBackground;
      }
      //---si hemos definido el borde de la caja
      if (colorBorder != undefined){
                  this.tHolder.myField.border = true;
                  this.tHolder.myField.borderColor = colorBorder;
      }
      //---aplicamos el formato
      this.tHolder.myField.setTextFormat(tFieldStyle);

      //---manejadores de eventos
      this.tHolder.onRollOver = function(){
                  this.myField.backgroundColor = colorBackgroundOver;
                  this.myField.borderColor = colorBorderOver;
      }
      this.tHolder.onPress = function(){
                  this.myField.backgroundColor = colorBackgroundOver;
                  this.myField.borderColor = colorBorderOver;
                  mifuncion = eval(funcion)
                  mifuncion.call(_root, fotograma)
      }
      this.tHolder.onRelease = function(){
                  borrame(this);
      }
      this.tHolder.onRollOut = function(){
                  this.myField.backgroundColor = colorBackground;
                  this.myField.borderColor = colorBorder;
                  this.tHolder.myField.setTextFormat(tFieldStyle);
      }
}
//-------- FUNCI�N PARA BORRAR OBJETOS DE PANTALLA
_global.borrame = function (ref) {
      ref.removeMovieClip ();
}

</code>

----------------------------------------------------------------------------

Felipe Alonso
Dise�ador/Desarrollador
MDS Pharma Services
c/ Rosa de Lima, 1-bis, Edificio Alba
28290 Las Matas (Madrid)

Tel: 91 636 99 37 (directo)
Fax: 91 630 7474

[EMAIL PROTECTED]
www.mdsps.es
----------------------------------------------------------------------------


<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->

Responder a