Comunidad de diseño web y desarrollo en internet online

multiboton pelicula

Citar            
MensajeEscrito el 07 Feb 2009 10:07 pm
Buenos dias,

Estoy programando una aplicación que en as2 tardaba 5 minutos y en as3 me está volviendo loco.

La cuestión es que antes usaba en as2 algo similar a esto :

Código ActionScript :

/////////////codigo as2
var opcionAnterior:MovieClip=undefined;
for (i=1;i<=12;i++) {
   eval("bt2"+i).valor=i;
   eval("bt2"+i).onRelease=function() {
      submenu2._alpha=0;      
      switch (this.valor) {
         case 1:   _global.fons="jpg/fondo1.jpg";break;
...
         case 12:_global.fons="jpg/fondo12.jpg";submenu2._alpha=100;submenu2.gotoAndPlay(2);break;                     
   }
   opcioAnterior.gotoAndStop(1);
   opcioAnterior.enabled=true;
   opcioAnterior=this;
   this.gotoAndStop(2);
   this.enabled=false;
   };
}
/////////

con lo cual si tenia 6 movieclips aparentemente similares cambiando solo la i me cambiaba la pelicula a 2 y todas la pelicula que anteriormente estaba clickada se me volvia enabled a true otra vez y me volvia a la posicion 1

La historia en as3 es completamente diferente y he probado varias cosas y no me funciona de forma igual. No me hace caso de la activación / desactivación de los botones etc....

Alguien podria decirme cual es mi error ? En as3 he puesto el codigo dentro de los botones y cuando se clicka dicho boton se va a una funcion que he realizado dos movieclips mas arriba.

Cada boton en as3 contiene en el frame 1

Código ActionScript :

////////////////////////////////
var rewind:Boolean = false;
bt.addEventListener(MouseEvent.ROLL_OVER,growUP);
bt.addEventListener(MouseEvent.ROLL_OUT,growDown);
bt.addEventListener(MouseEvent.CLICK,gotoSite);


bt.buttonMode = true;
bt.useHandCursor = true;

function growUP(e:MouseEvent):void{
play();
rewind = false;
}

function growDown(e:MouseEvent):void{
rewind = true;
}
function gotoSite(e:MouseEvent):void{
//accion on click
}

this.addEventListener(Event.ENTER_FRAME,revFrame);
function revFrame(e:Event):void{
if(rewind == true){
prevFrame();
}
}
////////////

pero me encuentro que la accion on click que quiero es desactivar el propio boton y activar los demas como hacia en as2 pero no lo hace...algun tipo de ayuda que ofrecerme ? Lo agradecería.

[Zah]Usa las etiquetas [as] para postear código en ActionScript[/Zah]

Por egalles79

2 de clabLevel



 

2006

firefox
Citar            
MensajeEscrito el 08 Feb 2009 08:46 pm
Err no entiendo muy bien qué quieres hacer... pero en As3 se programa de otra manera. Típicamente cada movieclip botón tendría una clase asociada (que extendería a una clase base) , en un archivo .as aparte y cuando quieras que los otros botones se "enteren" de algo, lo harás lanzando un evento. Deberías buscar bastante información sobre todo eso.

Sería algo así:

Código ActionScript :

import flash.display.MovieClip
import flash.events.Event
public class ButtonBase extends MovieClip
{
public static const GLOBALCLICK:String = "globalclick";
public function ButtonBase ()
{
this.addEventListener (Event.CLICK, globalClick)
this.addEventListener (ButtonBase.GLOBALCLICK, disableOthers)
}
private function globalClick (event:Event)
{
this.dispatchEvent (new Event (ButtonBase.GLOBALCLICK));
}
private function disableOthers(event:Event)
{
if (event.target != this) this.enabled = false;
}
}


No lo he probado, así que puede haber errores.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 10 Feb 2009 12:29 am
Bueno, mas o menos voy pillando el truquillo para esto.

Solo tengo una pequeña duda que me gustaría que me pudierais explicar :

Tengo una serie de botones en as3 que se diferencian solo por el numero al que se le asigno con una variable integer a los que asigno rollover i rollout con 2 listeners. La cuestion ahora es similar a la otra pero quizás con otro método.


var i:int;
for (i=1;i<=6;i++) {
this["bt"+i].addEventListener(MouseEvent.ROLL_OVER,growUP);
this["bt"+i].addEventListener(MouseEvent.ROLL_OUT,growDown);
this["bt"+i].buttonMode=true;
this["bt"+i].useHandCursor = true;
}
Hay alguna forma que cuando yo cree un evento click pueda remover esos listeners ?
Gracias de antemano

Por egalles79

2 de clabLevel



 

2006

firefox
Citar            
MensajeEscrito el 11 Feb 2009 05:51 pm
A ver, voy encontrando una luz al final del tunel, pero bueno, he tenido que adaptar código. He creado un elemento externo llamado punto que se me dirige a la y de cada uno de los botones (no es del todo funcional, tal y como lo queria pero bueno, menos es nada

Código ActionScript :

/// primero les digo a mis peliculas que actuen como botones con listeners
var i:int;
for (i=1;i<=6;i++) {
   this["bt"+i].addEventListener(MouseEvent.ROLL_OVER,growUP);
   this["bt"+i].addEventListener(MouseEvent.ROLL_OUT,growDown);
   this["bt"+i].addEventListener(MouseEvent.CLICK,clicBoton);
   this["bt"+i].buttonMode=true;
   this["bt"+i].useHandCursor = true;
}
function growUP(e:MouseEvent):void{ ///accion del boton en rollover
   e.target.gotoAndPlay(2);
}

function growDown(e:MouseEvent):void{ //accion del boton en rollout
   e.target.gotoAndStop(1);
}

function clicBoton(e:MouseEvent) //accion del boton al clickar
{
    var nombre:String = e.currentTarget.name;
    var num:uint = uint(nombre.replace("bt", "")); //importante : asi se el numero de boton q esta clickando
   var n:int;
   for (n=1;n<=6;n++) {   
      if (this["bt"+num]==this["bt"+n]) {
         this["punto"].y=this["bt"+n].y;
      }
   }
}
stop();


Espero que os sirva de ayuda para empezar a crear una función con varios apartados.

Por egalles79

2 de clabLevel



 

2006

firefox
Citar            
MensajeEscrito el 11 Feb 2009 11:01 pm
Realmente no necesitas usar tanto los nombres de instancia en AS3.

Podrías hacer:

Código ActionScript :

for (var i:int = 0; i<3; i++)
{
var btn:ButtonBase = new ButtonBase ()
btn.id = i;
btn.addEventListener(....;
}

donde se supone que tienes una clase ButtonBase, con una propiedad pública id.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox

 

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