Después de años de huirle al AS3, por fin me tuve que enfrentar a el y lo peor, con dinero de por medio.
Resulta que estoy modificando una plantilla flash AS3 basada casi por entero en XML, asi que todo lo que pasa ahi esta definido dentro de un archivo as y algunos cambios menores se realizan modificando varios archivos XML, sin embargo, me estan pidiendo que un boton que acabamos de agregar, realize la misma funcion que los botones que ya vienen preestablecidos en la plantilla, cosa que hasta el momento, no he podido resolver.
En si lo que hacen los botones es cargar y descargar diversas peliculas SWF es decir, picas un boton y se descarga una pelicula para que otra se cargue, sin embargo, los botones son llamados desde un XML por medio de arrays, y no encuentro el punto donde puedo digamos "repetir" la funcion que hacen porque me pierdo entre tanto codigo, lo peor es que esta es la unica cosa que me separa de terminar el proyecto y no quiero decirles "no se puede" a mis clientes siendo que se que si se puede, el problema es que no se como hacerlo.
he pensado que tal vez puedo "llamar" a alguna de las funciones que ocurren al dar click. esta es la linea de codigo que creo esta relacionada con la funcion de llamar a los SWF en base a su array:
CODIGO:
private function selectItem(id:String, type:String):void {
var mainButton:Object;
switch (type) {
case "mainB" :
mainButton=menuArr[id].button;
menuArr[id].activ = true;
break;
case "subB" :
var menuBA:Array = id.split("/");
mainButton = menuArr[menuBA[0]].button;
menuArr[menuBA[0]].activ = true;
var subButton:Object = menuArr[menuBA[0]]._subMenu[menuBA[1]].button;
colorCgange(subButton.txt, subMenuText_mouseOver);
menuArr[menuBA[0]]._subMenu[menuBA[1]].activ=true;
break;
}
colorCgange(mainButton.img, buttons_mouseOver);
colorCgange(mainButton.txt, buttons_mouseOver);
}
private function openItem(id:String, type:String):void {
var componentSWF:String;
var componentPath:String;
switch (type) {
case "mainB" :
componentSWF =String(menuArr[id].cont.componentSWF);
componentPath =String(menuArr[id].cont.componentPath);
break;
case "subB" :
var menuBA:Array = id.split("/");
var informBox:Object = menuArr[menuBA[0]]._subMenu[menuBA[1]];
componentSWF =String(informBox.cont.componentSWF);
componentPath =String(informBox.cont.componentPath);
break;
}
xmlCOLORS_DFT = componentPath+"/colors.xml";
xmMAIN_XML_PATH = componentPath+"/cgal.xml";
itemsPath = componentPath+"/";
mainLoader(itemsPath+"/"+componentSWF);
}
private function mainButtonH(e:MouseEvent):void {
var button = e.currentTarget;
var id:String = button.name;
Tweener.removeTweens(this)
switch (e.type) {
case "mouseOut" :
if (!menuArr[id].activ && menuArr[id].cont.type!="menu") {
colorCgange(button.txt, buttons_mouseOut);
colorCgange(button.img, buttons_mouseOut);
}
break;
case "mouseOver" :
closeAllSubMmenu();
if (menuArr[id].cont.type=="menu") {
Tweener.addTween(this,{delay:.2, onStart:function(){openSubMenu(parseInt(id));}})
}else{
colorCgange(button.txt, buttons_mouseOver);
colorCgange(button.img, buttons_mouseOver);
}
break;
case "click" :
if (!menuArr[id].activ) {
deactivComp();
openItem(id,'mainB');
selectItem(id,'mainB');
}
break;
}
Para acabar pronto estoy perdido en el espacio, no se que hacer para hacer que un boton que yo agregue "a la antiguita" en uno de los layers, haga lo mismo que hacen los botones preestablecidos, otros botones que agregue si funcionan, ya logre llamar URLs sin problema, pero ahora necesito saber como diantres emular la funcion de abrir un swf y cerrar un swf como lo hacen los otros botones, ojala no sea mucho pedir compasion por estas tierras de los amos y señores del flash.
Si de plano no estoy preguntando correctamente o necesitan mas datos para echarme una mano, haganmelo saber y pondre manos a la obra, gracias de antemano por la ayuda y por la paciencia.
Blak
