Comunidad de diseño web y desarrollo en internet online

PROBLEMA AL ENLAZAR VARIOS BOTONES A URLS DIFERENTES EN AS 3.0

Citar            
MensajeEscrito el 20 Abr 2012 08:27 am
BUENAS, ESTOY HACIENDO UNA WEB DONDE HAY 10 BOTONES QUE QUIERO VINCULARLOS A URL´S DISTINTAS. TENGO EL CÓDIGO PARA UNO SÓLO Y VA BIEN PERO CUANDO PONGO EL MISMO A OTRO BOTON ME PONE FUNCIÓN DUPLICADA.
HE PROBADO A PONER EN CADA UNO DE LOS BOTONES EL SIGUIENTE CÓDIGO:
var url1:String = "http://www.../";
var url2:String = "http://www.../";
var url3:String = "http://www.../";
var url4:String = "http://www.../";
var url5:String = "http://www.../";
var url6:String = "http://www.../";
var url7:String = "http://www.../";
var url8:String = "http://www.../";
var url9:String = "http://www.../";
var url10:String = "http://www.../";

function menu(onEnterFrame) {
for (i=10; i<10; i+1) {
_root.botoncontacto[i].addEventListener(MouseEvent.CLICK, ClicDeRaton[i]);
function ClicDeRaton[i](event:MouseEvent):void {
navigateToURL(new URLRequest(url+i));
}
}
};

PERO ME TIRA EL ERROR "1084: Error de sintaxis: se esperaba leftparen antes de leftbracket." Y AL DARLE IR A ORIGEN ME SITUA EL ERROR EN LA LINEA DEL CÓDIGO "function ClicDeRaton[i](event:MouseEvent):void {"
PODEIS AYUDARME POR FAVOR

Por freddycam

20 de clabLevel



 

msie8
Citar            
MensajeEscrito el 20 Abr 2012 09:40 am
Tienes un sinfin de errores e incongruencias en el código:

Código ActionScript :

//Lo primero si vas a declarar 10 variables así
var url1:String = "http://www.../";
var url2:String = "http://www.../";
var url3:String = "http://www.../";
var url4:String = "http://www.../";
var url5:String = "http://www.../";
var url6:String = "http://www.../";
var url7:String = "http://www.../";
var url8:String = "http://www.../";
var url9:String = "http://www.../";
var url10:String = "http://www.../";

//Es mejor que hagas un array así:
var misUrls:Array = new Array('http://url1.com', 'http://url2.com', 'http://url3.com', 'http://url4.com', 'http://url5.com', 'http://url6.com', 'http://url7.com', 'http://url8.com', 'http://url9.com', 'http://url10.com');
//Y accedas a sus valores así:
misUrls[0], misUrls[1] ...

//Lo segundo es que estás intentando usar un enterFrame (mal construido por cierto) para declarar listeners a través de un bucle
//¡¡NUNCA!!, menos mal que el enterframe lo has creado horriblemente
//y el bucle que has montado es un desastre, si no te explota el procesador
//Hecha cuentas de lo que estás intentado hacer, si tienes la película a 30 fps por ejemplo y estás intentado meter 10 escuchas por cada frame,
//cada segundo estarás generando 300 listeners, cada minuto 18.000 listeners y así progresivamente INACEPTABLE
function menu(onEnterFrame) {

//El bucle de tu función menú, has hecho un bucle cuyo valor empieza en 10
//y le estas pidiendo que corra mientras i sea inferior a 10, osease NUNCA
//Además en as3 la variable i hay que declararla "for (var i:int = 10"
for (i=10; i<10; i+1) {

//Aquí estás intentando a mi parecer crear escucha en los botones botoncontacto1, botoncontacto2 ...
//maaaal lo que estas haciendo en realidad es llamar a un array que en teoría hay en el root llamado botoncontacto que está rellenado con objetos
//y a cada objeto de ese array le está añadiendo el listener
//Y por último, OMG al poner la función, en vez de eso, estás volviendo a llamar a un array llamado ClickDeRaton
_root.botoncontacto[i].addEventListener(MouseEvent.CLICK, ClicDeRaton[i]);

//Y por último a la función ClickDeRaton le estás añadiendo un parámetro inexistente para una función los corchetes detrás del nombre
//ClickDeRaton --->[i]<--- , ¿¿¿??? qué diablos es eso, no se si soy un pardillo y es una parte de las funciones que se me escapa
//Pero te puedo asegurar que en los miles de declaraciones de funciones que llevo leidas es la primera vez en mi vida que lo veo
function ClicDeRaton[i](event:MouseEvent):void {

Revísate todo eso con paciencia, y cuando tengas un código mejor montado, te vamos ayudando a que funcione.

Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 20 Abr 2012 10:49 am
MUCHAS GRACIAS Abducted LA VERDAD ES QUE SOY BASTANTE NUEVO EN ESTO DE AS 3.0, ESTE CODIGO LO VI EN OTRO LADO Y LO HE ADAPTADO UN POCO A LO QUE NECESITABA.
LA VERDAD ES QUE COMO DECIA PARA UN BOTÓN SÓLO SI TENGO BASTANTE CLARO COMO HACERLO PERO PARA VARIOS BOTONES COMO ES EN ESTE CASO ESTOY BASTANTE PEZ (YA TE HABRÁS DADO CUENTA)
LO INTENTARÉ CON ARRAY COMO ME COMENTABAS, DE TODAS FORMAS SI TUVIERAS ALGÚN EJEMPLO QUE PUDIERA AYUDARME TE LO AGRADECERÍA ENORMEMENTE.
GRACIAS

Por freddycam

20 de clabLevel



 

msie8
Citar            
MensajeEscrito el 20 Abr 2012 10:51 am
Creo que antes de ver muestras de código deberías saber lo que pone y por que.
Revísate bien lo que te cuento arriba (estudialo), realiza los cambios oportunos, vete mostrándonos los cambios y te vamos comentado.

Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 20 Abr 2012 11:10 am
Y una cosa importante, si estás haciendo una web íntegra en flash, deberías tener esto muy en cuenta.
El futuro de flash en la web
Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 20 Abr 2012 11:51 am
MUCHAS GRACIAS POR EL CONSEJO

Por freddycam

20 de clabLevel



 

msie8
Citar            
MensajeEscrito el 20 Abr 2012 01:22 pm
Te comento que no es agradable que escriban todo en mayúscula ya que el que lo lee siente como si le estuviesen gritando , saludos MAxx

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox
Citar            
MensajeEscrito el 20 Abr 2012 01:24 pm
Sipi, yo no quería decir nada, pero lo pensaba todo el rato mientras lo leía.

Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 20 Abr 2012 02:15 pm
ok, lo siento, pero igual que decía que no soy muy experto en as 3.0 tampoco soy muy asiduo de este tipo de foros.

un saludo,

Por freddycam

20 de clabLevel



 

msie
Citar            
MensajeEscrito el 20 Abr 2012 02:24 pm
no te preocupes que nadie nace sabiendo solo te lo digo para que no lo sigas haciendo. ademas que es parte de las reglas del foro.

saludos Maxxx

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox
Citar            
MensajeEscrito el 20 Abr 2012 10:22 pm
hola de nuevo, he cambiado completamente el código:
botonhome.addEventListener(MouseEvent.CLICK, irahome);
botonsobre.addEventListener(MouseEvent.CLICK, irasobre);
botonglobo.addEventListener(MouseEvent.CLICK, iraglobo);
botoninicio.addEventListener(MouseEvent.CLICK, irainicio);
botonsegenerales.addEventListener(MouseEvent.CLICK, irasegenerales);
botonsegcredito.addEventListener(MouseEvent.CLICK, irasegcredito);
botonsegcaucion.addEventListener(MouseEvent.CLICK, irasegcaucion);
botoncompanias.addEventListener(MouseEvent.CLICK, iracompanias);
botonlocalizacion.addEventListener(MouseEvent.CLICK, iralocalizacion);
botoncontacto.addEventListener(MouseEvent.CLICK, iracontacto);

function irahome(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/"));
}
function irasobre(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/contacto.htm"));
}
function iraglobo(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/localizacion.htm"));
}
function irainicio(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/presentacion.htm"));
}
function irasegenerales(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/segurosgenerales.htm"));
}
function irasegcredito(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/seguroscredito.htm"));
}
function irasegcaucion(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/seguroscaucion.htm"));
}
function iracompanias(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/companias.htm"));
}
function iralocalizacion(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/localizacion.htm"));
}
function iracontacto(event:MouseEvent) :void{
navigateToURL (new URLRequest("http://www.gescosl.net/contacto.htm"));
}
Esta vez no me da ningún error en errores de compilador pero si me sale uno en salida:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at enlaces2_fla::MainTimeline/frame1()
Qué he hecho mal, podéis ayudarme?

Por freddycam

20 de clabLevel



 

msie
Citar            
MensajeEscrito el 20 Abr 2012 11:52 pm
Llevo unas cuantas horas preparando un tuto y tengo la cabeza como un bombo de las voces de mi novia, entre eso y que no soy un hacha en AS3, no se si la solución que te propongo es la más correcta, pero más efectiva que la tuya y sin fallos seguro.

Código ActionScript :

//Importamos las clases que vallamos a usar al principio de nuestro Script
import flash.net.URLRequest;
import flash.events.MouseEvent;
import flash.display.MovieClip;

//Creamos un array con los pares boton-URL
var botonesUrls:Array = new Array(
   ['botonhome', 'http://www.gescosl.net/'],
   ['botonsobre', 'http://www.gescosl.net/contacto.htm'],
   ['botonglobo', 'http://www.gescosl.net/localizacion.htm'],
   ['botoninicio', 'http://www.gescosl.net/presentacion.htm'],
   ['botonsegenerales', 'http://www.gescosl.net/segurosgenerales.htm'],
   ['botonsegcredito', 'http://www.gescosl.net/seguroscredito.htm'],
   ['botonsegcaucion', 'http://www.gescosl.net/seguroscaucion.htm'],
   ['botoncompanias', 'http://www.gescosl.net/companias.htm'],
   ['botonlocalizacion', 'http://www.gescosl.net/localizacion.htm'],
   ['botoncontacto', 'http://www.gescosl.net/contacto.htm']
);

//Mediante un bucle creamos las escuchas
for (var i:int = 0; i < botonesUrls.length; i++) {
   //seleccionamos los objetos del stage mediante su nombre
   var boton:MovieClip = getChildByName(botonesUrls[i][0]) as MovieClip;
   //Activamos en cada boton el modo boton para que aparezca el cursor pointer
   boton.buttonMode = true;
   //Añadimos CLICK a cada boton y le decimos que ejecute obtenerUrl
   boton.addEventListener(MouseEvent.CLICK, obtenerUrl);
}


function obtenerUrl (e:MouseEvent) {
   //Creamos la cadena url vacía
   var url:String;
   //copiamos el array botonesUrls a un array interno para tener acceso desde el bucle
   //Estoy seguro de que esta no es la manera más correcta de hacerlo, pero creo que no conozco otra.
   var array:Array = botonesUrls;
   //Con un nuevo bucle comparamos el nombre del boton con los nombres en nuestro array
   for (var i:int = 0; i < array.length; i++) {
      //Si coincide
      if (e.target.name == array[i][0]) {
         //guardamos la url del array en la variable url
         url = array[i][1];
         //Y rompemos el bucle, ya que no nos interesa que continue
         break;
      }
   }
   //Y obtenemos la URL
   navigateToURL(new URLRequest(url));
}


Espero te sirva,
Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 21 Abr 2012 09:49 am
MUCHAS GRACIAS, LA PROBARÉ Y YA CONTARÉ AUNQUE EN PRINCIPIO PARECE QUE LA QUE PLANTEABA FUNCIONA BIEN

Por freddycam

20 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Abr 2012 07:51 am
Hola de nuevo a todos, al final desistí de ese código y lo cambié por otro que si me funcionó, pero ahora ese mismo código lo he insertado para otra web distinta y no me funciona. Os pongo el código y el error a continuación:

function irainicio(event:MouseEvent) :void
{
navigateToURL (new URLRequest("http://www.cvpatasarriba.es/"));
}
function iraequipo(event:MouseEvent) :void
{
navigateToURL (new URLRequest("http://www.cvpatasarriba.es/quienessomos.htm"));
}
function iraservicios(event:MouseEvent) :void
{
navigateToURL (new URLRequest("http://www.cvpatasarriba.es/servicios.htm"));
}
function iragaleria(event:MouseEvent) :void
{
navigateToURL (new URLRequest("http://www.cvpatasarriba.es/galeria.htm"));
}
function iraarticulos(event:MouseEvent) :void
{
navigateToURL (new URLRequest("http://www.cvpatasarriba.es/articulos.htm"));
}
function iratablon(event:MouseEvent) :void
{
navigateToURL (new URLRequest("http://www.cvpatasarriba.es/tablon.htm"));
}
function iralocalizacion(event:MouseEvent) :void
{
navigateToURL (new URLRequest("http://www.cvpatasarriba.es/contacto.htm"));
}

botoninicio.addEventListener(MouseEvent.CLICK, irainicio);
botonequipo.addEventListener(MouseEvent.CLICK, iraequipo);
botonservicios.addEventListener(MouseEvent.CLICK, iraservicios);
botongaleria.addEventListener(MouseEvent.CLICK, iragaleria);
botonarticulos.addEventListener(MouseEvent.CLICK, iraarticulos);
botontablon.addEventListener(MouseEvent.CLICK, iratablon);
botonlocalizacion.addEventListener(MouseEvent.CLIC K, iralocalizacion);

en errores de compilacion me salía esto en principio:
1046: No se encontró el tipo o no es una constante en tiempo de compilación: boton_____. (me sale lo mismo para los 7 botones)

tengo todos los botones insertados en el escenario y después les he puesto el nombre de instancia (que es el mismo que les puse al crearlo, el que aparece en el codigo) que era algo que faltaba.
Los botones me siguen sin funcionar pero el error ahora es distinto:

1061: Llamada a un método addEventListener posiblemente no definido mediante una referencia con tipo estático Class.

Además ahora tengo otro problema, tengo colocado en una de las capas el código stop(); para que se reproduzca todo una sola vez, antes de ponerle a los botones el nombre de instancia y de volver a meter el código funcionaba pero ahora la reproducción no se para.

Me estoy volviendo loco, ¿que puedo hacer?

Por freddycam

20 de clabLevel



 

msie8

 

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