Comunidad de diseño web y desarrollo en internet online

1120: Access of undefined property

Citar            
MensajeEscrito el 23 Jun 2008 05:56 pm
Hola a todos!!! Soy nuevo en flash y Actionscript. Estoy desarrollando una pagina.
Estoy usando ActionScript 3.0 y en una solapa aparte donde pongo las acciones en el comienzo del boton "Home" escribo lo siguiente:

Código :

[b]stop();

function onHomeClick(evt:MouseEvent):void {
    gotoAndStop("Home");
}
Home.addEventListener(MouseEvent.CLICK, onHomeClick);

function onServiciosClick(evt:MouseEvent):void {
    gotoAndStop("Servicios");
}
Servicios.addEventListener(MouseEvent.CLICK, onServiciosClick);

function onZonaGeoClick(evt:MouseEvent):void {
    gotoAndStop("ZonaGeo");
}
ZonaGeo.addEventListener(MouseEvent.CLICK, onZonaGeoClick);

function onProyectosClick(evt:MouseEvent):void {
    gotoAndStop("Proyectos");
}
Proyectos.addEventListener(MouseEvent.CLICK, onProyectosClick);

function onAliadosClick(evt:MouseEvent):void {
    gotoAndStop("Aliados");
}
Aliados.addEventListener(MouseEvent.CLICK, onAliadosClick);

function onContactenosClick(evt:MouseEvent):void {
    gotoAndStop("Contactenos");
}
Contactenos.addEventListener(MouseEvent.CLICK, onContactenosClick);


Cuando ejecuto la pelicula, no me para en home y no hace nada al presionar los botones y me tira el siguiente error:

1120: Access of undefined property Home.
1120: Access of undefined property Servicios.
1120: Access of undefined property ZonaGeo.
1120: Access of undefined property Proyectos.
1120: Access of undefined property Aliados.
1120: Access of undefined property Contactenos.


Investigando en foros por la web, alguien me dijo que el error puede estar en que no me esta reconociendo a los botones. Como que no encuentra a los objetos con ese nombre.

Ahora, cada boton tiene ese nombre en su "instance" (no se como se llama en castellano, pero en las propiedades de cada boton en su etiqueta tiene ese nombre)

Alguna sugerencia?

Gracias!!!

editado por eldervaz

Por ladof

12 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Jun 2008 06:13 pm
En menú File, Publish Options, Flash tab, ActionSctript 3, marca que declare automáticamente las instancias en el escenario

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Jun 2008 06:18 pm
Hola Jorge, gracias por responder.

Te cuento que esa opción la tengo tildada, osea seleccionada. Puede ser que no me este reconociendo el objeto boton?

Gracias

Por ladof

12 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Jun 2008 06:30 pm
Entonces debería funcionar. Veamops un ejemplillo proof os concept

En una peli nueva, un botón con nombre de instancia Home y tu mismo código:

Código :

function onHomeClick(evt:MouseEvent):void {
    gotoAndStop("Home");
}
Home.addEventListener(MouseEvent.CLICK, onHomeClick);


¿Funciona? Entonces a buscar las diferencias. ¿No funciona? Entonces es posible que no estes poniendo bien el nombre de instancia

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Jun 2008 06:42 pm
Me parece que has confundido dos términos.

Los botones en su instancia dicen "instance of:Home" por ejemplo, esto quiere decir que este Objeto es una instancia del Objeto "Home" que tienes en la bilbioteca. Esto nada tiene que ver con "Instance Name", por ejemplo, puedes tener un objeto perteneciente a la instancia "Home" de la biblioteca duplicado diez veces y cada uno con diferentes nombres de instancia, por lo que el nombre que tienen en la biblioteca nada importa, es solamente para guía del desarrollador.

Tienes que tomar estos objetos y ponerles como nombre de instancia (fijate debajo de donde dice "instance of:") hay un campo para escribir y ahi ponerle "Home", "Servicios", etc.

Por otro lado te recomiendo para que optimices más el código, que no hagas una función y un evento por cada botón, si no que crees un ciclo que lea de un arreglo, a continuación te pongo un ejemplo de tu mismo código:

Código :

var botones:Array = new Array("Home", "Servicios", "ZonaGeo", "Proyectos", "Aliados", "Contactenos");
var i:uint;

for(i = 0; i < botones.length; i++){
   
   this[botones[i]].addEventListener(MouseEvent.CLICK, gotoPage);
   
}

function gotoPage(evt:MouseEvent):void{
   
   gotoAndStop(evt.target.name);
   
}

stop();


De esta forma si quisieras añadir un nuevo módulo, solamente tienes que añadirlo al arreglo, crear el botón y crear el label en la línea de tiempo (porque veo que es como estás haciendo el trabajo).

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 23 Jun 2008 07:07 pm
Muchas gracias por las respuestas!!!!!!!!!

Pondré en práctica lo que me dicen.

Muchas gracias!

Por ladof

12 de clabLevel



Genero:Masculino  

firefox

 

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