Creo que una buena opci�n ser�a crearte una clase y despu�s asignarla con
Object.registerClass, ah� quedar�a realmente reutilizable 100%. El c�digo
ser�a algo as�:

<code>
//Constructor
function customButton() {
   this.actions = new Array();
}

var o = customButton.prototype = new MovieClip();

o.onLoad = function() {
  // Aqu� y en el constructor
  // ir�an los par�metros de inicializaci�n
  this.gotoAndStop(0);
}

o.onRollOver = function() {
  this.gotoAndStop(2);
}

o.onRollOut = o.onReleaseOutside = function() {
  this.gotoAndStop(1);
}

/*****
 * Este m�todo sirve para apilar
 * las funciones que se deber�n
 * ejecutar cuando se haga click
 *******/
o.addClick = function(funcion) {
   this.actions.push(funcion);
}

o.onRelease = function() {
  var element = new Number(0);
  var length = this.actions.length;
  for (element = 0; element < length; element++)
      this.actions[element].call(this);
}
</code>

Para cada MC que quieras aplicacarle el comportamiento de la clase tendr�s
que hacer:

<code>
Object.registerClass("nombre_vinculacion_MC",customButton);
</code>

En fin, es una primera aproximaci�n que junto con lo que tienes puede
quedar guapo ;-)

Saludos
Xavi

> 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
> -------------------------------->
>

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

Responder a