Comunidad de diseño web y desarrollo en internet online

problema con un ejemplo que descargue de internet

Citar            
MensajeEscrito el 25 Ene 2010 07:40 pm
muchachos consgui un ejemplo en internet, y revisando el .fla encontre este codigo q controla todo lo que hace el web site(creo) pero lo que me llamo la atencion es la forma en que esta diseñada o programada la botonera; ya que los 6 botones estan en un solo mc y se le aignan los nombres usando un array; mi problema es, como puedo utilizar un sistema igual en mi web? intente hacerlo guiandome por el codigo del ejemplo pero 100pre me dice
[quote=error]
1180: Llamada a un método flashmo_button posiblemente no definido.
[/quote]

incluso probe colocando los mismos nombres q en el ejemplo pero 100pre es lo mismo :'( estoy incursionando apenas en as3 ... ayudita por fis ;)

Código ActionScript :

//**boton**//
var menu_label:Array = new Array("Homepage", "Services", 
                         "Clients", "Templates|http://www.flashmo.com",
   "Company", "Contact Us");
var total:Number = menu_label.length;
var spacing:Number = 64;
var i:Number = 0;
var page:Number;
var main_menu:MovieClip = new MovieClip();
stage.addChild(main_menu);

for( i = 0; i < total; i++ )
{
   var btn = new flashmo_button();
   btn.name = "btn" + i;
   btn.x = fm_button.x + spacing * i;
   btn.y = fm_button.y;
   btn.flashmo_button_bg.gotoAndStop( i + 1 );
   btn.item_no = i;
   btn.addEventListener( Event.ENTER_FRAME, btn_enter );
   
   var each_substring:Array = menu_label[i].split("|");  
   btn.flashmo_button_label.fm_label.text = each_substring[0];  
   btn.item_url = each_substring[1];
   main_menu.addChild(btn);
}

function btn_over(e:MouseEvent):void
{
   e.target.parent.over = true;
}

function btn_out(e:MouseEvent):void
{
   e.target.parent.over = false;
}

function btn_click(e:MouseEvent):void
{
   var mc = e.target.parent;
   if( mc.item_url != undefined )  
      navigateToURL( new URLRequest( mc.item_url ), "_parent" );
   else  
      change_page(mc.item_no);
}

function btn_enter(e:Event):void
{
   var mc = e.target;
   if( mc.over == true )
      mc.nextFrame();
   else
      mc.prevFrame();
}

function change_page(no:Number):void
{
   for( var i:Number = 0; i < main_menu.numChildren; i++ )
   {
      var mc = MovieClip( main_menu.getChildAt(i) );
      mc.over = false;
      mc.flashmo_click_area.visible = true;
      mc.flashmo_click_area.addEventListener( MouseEvent.ROLL_OVER, btn_over );
      mc.flashmo_click_area.addEventListener( MouseEvent.ROLL_OUT, btn_out );
      mc.flashmo_click_area.addEventListener( MouseEvent.CLICK, btn_click );
   }
   var mc_selected = MovieClip( main_menu.getChildAt(no) );
      mc_selected.over = true;
      mc_selected.flashmo_click_area.visible = false;
      mc_selected.flashmo_click_area.removeEventListener( MouseEvent.ROLL_OVER, btn_over );
      mc_selected.flashmo_click_area.removeEventListener( MouseEvent.ROLL_OUT, btn_out );
      mc_selected.flashmo_click_area.removeEventListener( MouseEvent.CLICK, btn_click );
      
   page = no + 1;
   play();
}

change_page(0);   // default page on load

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 25 Ene 2010 09:17 pm
aqui les adjunto el archivo fla

megaupload.com/?d=HO2KSLJC

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 26 Ene 2010 01:49 am
Te comente el código para ayudarte a que lo entiendas:

Código ActionScript :

/**boton**// 
// @Hernan: Definimos los nombres de nuestros botones en un Array
var menu_label:Array = new Array("Homepage", "Services",  
                         "Clients", "Templates|http://www.flashmo.com", 
   "Company", "Contact Us"); 
// @Hernan: Cantidad de botones que crearemos usando la propiedad length de un Array
var total:Number = menu_label.length; 
// @Hernan: Espaciado que usaremos en el for 
var spacing:Number = 64; 
// @Hernan: El sujeto no sabe que puede definir directamente i en el bucle haciendo var i=0;int, ni sabe que es recomendable usar int o unit y no Number
var i:Number = 0; 
// @Hernan: Variable de control de paginado
var page:Number; 
// @Hernan: Contenedor para nuestros Botones 
var main_menu:MovieClip = new MovieClip(); 
// @Hernan: Agregamos el contenedor al Stage. Podría haber hecho this.addChild mejor pero bueno 
stage.addChild(main_menu); 
 
// @Hernan: Iniciamos el bucle con la variable i antes definida y total (Cantidad de botones)
for( i = 0; i < total; i++ ) 
{ 
// @Hernan: Tu problema aquí, esto inicia la Clase Flashmo_Button, que no la tienes. Borralo
   var btn = new flashmo_button(); 
// @Hernan: Asignamos el nombre del botón
   btn.name = "btn" + i; 
// @Hernan: fm_button debe ser algo de la Clase. Reemplazalo sino tienes la Clase 
   btn.x = fm_button.x + spacing * i; 
   btn.y = fm_button.y; 
// @Hernan: Idem
   btn.flashmo_button_bg.gotoAndStop( i + 1 ); 
// @Hernan: Totalmente innecesario 
   btn.item_no = i; 
// @Hernan: Inicia un enterFrame para el botón con la función btn_enter 
   btn.addEventListener( Event.ENTER_FRAME, btn_enter ); 
   
// @Hernan: Definición si es un "url" con un corte de String con el caracte "|" 
   var each_substring:Array = menu_label[i].split("|");   
// @Hernan: Definido dentro de la Clase 
   btn.flashmo_button_label.fm_label.text = each_substring[0];
   btn.item_url = each_substring[1]; 
// @Hernan: Agregamos el botón al contenedor 
   main_menu.addChild(btn); 
} 
 
// @Hernan: Función para el Boton en RollOver 
function btn_over(e:MouseEvent):void 
{ 
   e.target.parent.over = true; 
} 
 
// @Hernan: Función para el Boton en RollOut
function btn_out(e:MouseEvent):void 
{ 
   e.target.parent.over = false; 
} 
 
// @Hernan: Función para el CLICK
function btn_click(e:MouseEvent):void 
{ 
   var mc = e.target.parent; 
// @Hernan: Si definimos la URL hacer un navigateToURL, sino hacer un changePage. O sea si es un link ir al link, sino a la parte de la sección 
   if( mc.item_url != undefined )   
      navigateToURL( new URLRequest( mc.item_url ), "_parent" ); 
   else   
      change_page(mc.item_no); 
} 
 
// @Hernan: La función del enterFrame, parece que esta animado el over
function btn_enter(e:Event):void 
{ 
   var mc = e.target; 
   if( mc.over == true ) 
      mc.nextFrame(); 
   else 
      mc.prevFrame(); 
} 
 
// @Hernan: Función para cambiar de sección en caso de no ser un link 
function change_page(no:Number):void 
{ 
   for( var i:Number = 0; i < main_menu.numChildren; i++ ) 
   { 
      var mc = MovieClip( main_menu.getChildAt(i) ); 
      mc.over = false; 
      mc.flashmo_click_area.visible = true; 
      mc.flashmo_click_area.addEventListener( MouseEvent.ROLL_OVER, btn_over ); 
      mc.flashmo_click_area.addEventListener( MouseEvent.ROLL_OUT, btn_out ); 
      mc.flashmo_click_area.addEventListener( MouseEvent.CLICK, btn_click ); 
   } 
   var mc_selected = MovieClip( main_menu.getChildAt(no) ); 
      mc_selected.over = true; 
      mc_selected.flashmo_click_area.visible = false; 
      mc_selected.flashmo_click_area.removeEventListener( MouseEvent.ROLL_OVER, btn_over ); 
      mc_selected.flashmo_click_area.removeEventListener( MouseEvent.ROLL_OUT, btn_out ); 
      mc_selected.flashmo_click_area.removeEventListener( MouseEvent.CLICK, btn_click ); 
       
   page = no + 1; 
   play(); 
} 
 
change_page(0);   // default page on load 


Ya mismo te digo, te falta la clase y él autor de esto no es demasiado buen programador.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 26 Ene 2010 01:39 pm
pero yo no entiendo; alli me dices lo de la funcion flashmo_buttons q no existe; pero por q el fla del ejemplo si anda? a mi no me funciona el codigo pero descargate el fla del ejemplo q te menciono q es un template de un web site para q veas q si funciona pero la neta por mas q reviso no consigo codigo alguno aparte de este q mostre :'( ...

yo probe borrando el flashmo_buttons() pero igual no me funciona se pone como loca la animacion

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 26 Ene 2010 02:19 pm
Porque es una Clase, las Clases se llaman desde afuera. Además no es borrar y ya, re adapta el código, por eso te lo comente para que lo pudieras hacer.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 26 Ene 2010 02:50 pm
como asi? como q las clases se llaman desde afuera??

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 26 Ene 2010 03:36 pm

Código ActionScript :

/**boton**//  // @Hernan: Definimos los nombres de nuestros botones en un Array 
var menu_label:Array = new Array("Homepage", "Services",                            "Clients", "Templates|http://www.flashmo.com",     "Company", "Contact Us");  
// @Hernan: Cantidad de botones que crearemos usando la propiedad length de un Array 
var total:Number = menu_label.length;  
// @Hernan: Espaciado que usaremos en el for  
var spacing:Number = 64;  
// @Hernan: El sujeto no sabe que puede definir directamente i en el bucle haciendo var i=0;int, ni sabe que es recomendable usar int o unit y no Number 
var i:Number = 0;  
// @Hernan: Variable de control de paginado 
var page:Number;  
// @Hernan: Contenedor para nuestros Botones  
var main_menu:MovieClip = new MovieClip();  
// @Hernan: Agregamos el contenedor al Stage. Podría haber hecho this.addChild mejor pero bueno  
stage.addChild(main_menu);    
// @Hernan: Iniciamos el bucle con la variable i antes definida y total (Cantidad de botones) 
for( i = 0; i < total; i++ )  {  
// @Hernan: Tu problema aquí, esto inicia la Clase Flashmo_Button, que no la tienes. Borralo    
var btn = new flashmo_button();  
// @Hernan: Asignamos el nombre del botón    
btn.name = "btn" + i;  
// @Hernan: fm_button debe ser algo de la Clase. Reemplazalo sino tienes la Clase     
btn.x = fm_button.x + spacing * i;     
btn.y = fm_button.y;  
// @Hernan: Idem    
btn.flashmo_button_bg.gotoAndStop( i + 1 );  
// @Hernan: Totalmente innecesario     
btn.item_no = i;  
// @Hernan: Inicia un enterFrame para el botón con la función btn_enter     
btn.addEventListener( Event.ENTER_FRAME, btn_enter );     
 // @Hernan: Definición si es un "url" con un corte de String con el caracte "|"     
var each_substring:Array = menu_label[i].split("|");    
// @Hernan: Definido dentro de la Clase    
 btn.flashmo_button_label.fm_label.text = each_substring[0];    
btn.item_url = each_substring[1];  
// @Hernan: Agregamos el botón al contenedor   
  main_menu.addChild(btn); 
 }  

lo q me dice q peetenece a la clase; tal como fm_buttons, flashmo_button_bg... entre otros son nombres de instancia del mc q contiene las partes de lo q se convierte en la botonera al publicar la peli... no se a q te refieres con la clase ; pero en el template q descargue no viene ningun archivo as externo o algo por el estilo y al probar el template funciona perfectamente; tambien checando la opciones de publicacion tampoco aparece nada adjunto... ayuda :'( de verdad gracias por tus comentarios pero sigo sin entender; trato de hacer la botonera pero nada

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 26 Ene 2010 03:52 pm

Código ActionScript :

var btn = new flashmo_button(); 


Obviamente aquí no hay definido algo como:

Código ActionScript :

package{
    public class flashmo_button { 
        function flashmo_button(){}
    }
}


Ergo una clase esta siendo definida pero no esta en el código que pones.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 26 Ene 2010 03:56 pm
Creo yo, que el sujeto que armó esto es increíblemente desprolijo, hay cosas que no haría un buen programado OOP. Busca en algun lado debe estar la Clase, magia no hace aun Flash :P

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 26 Ene 2010 04:14 pm
flashmo_button es el nombre con el q exportó la botonera acabo de verlo en la biblioteca; pero = intento aplicar eso del array y la cosa; y ya no me dice nada en salida ni error ni nada pero tampoco hace lo q quiero; sigue saliendo un solo boton sin nombre :'( en lugar de 6 con los nombres del array

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 26 Ene 2010 04:33 pm
ya solucione esto ultimo XD era porque tenia el boton ubicado donde no era por eso no se veia XD

ahora q se ven y tienen sus nombres tengo q decirles lo q van a hacer; tengo en la escena un mc q contiene 6 mc con un contenido cada uno; mi idea es q al precionar cada boton trajera al frente el mc q esta ligado a cada boton para ver el contenido; como puedo hacer eso

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 26 Ene 2010 04:51 pm
esto es mas o menos lo q quiero

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8
Citar            
MensajeEscrito el 27 Ene 2010 12:54 am
Pues eso lo puedes hacer con contenedor.setChildIndex(Index_Level)

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 27 Ene 2010 01:07 pm
pero como? mira; hice esto; al boton le aplique este codigo

Código ActionScript :

   btn.addEventListener(MouseEvent.CLICK,intercambio);



y genere la funcion intercambio asi

Código ActionScript :

function intercambio(event:MouseEvent)
{
   fichas_mc.setChildIndex(fichas_mc.getChildAt(0),fichas_mc.numChildren -1)
}


pero; todos los botones hacen lo mismo; es como si el menu fuese un solo bboton enorme; que puedo hacer para solucionarlo? gracias por tu ayuda y disculpa tanta molestia

Por jakiras

Claber

148 de clabLevel



Genero:Femenino  

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.