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