Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/05/2011, 15:52
Avatar de juanito1712
juanito1712
 
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
conflictos entre instancias de una misma clase

supongamos que tengo una clase Patinador con este código (me he comido muchas cosas por limpiar código, si queréis los códigos completos lo decís y los subo)
Código AS3:
Ver original
  1. package clases {
  2.     public class Patinador extends MovieClip {
  3.         var zona;
  4.         var per;
  5.         var moviendo=0;
  6.         var valor;
  7.         public function Patinador(ancho:int,resto:int):void {
  8.             this.base.addEventListener(MouseEvent.MOUSE_DOWN, pulsa);
  9.             this.btn.addEventListener(MouseEvent.MOUSE_DOWN, coje);
  10.             this.btn.addEventListener(MouseEvent.MOUSE_UP, suelta);
  11.                         this.addEventListener(Event.ENTER_FRAME,refresca);
  12.            
  13.         }
  14.         function pulsa(e:Event):void{
  15.             this.moviendo=1;
  16.             this.btn.x=mouseX-5;
  17.             this.btn.startDrag(false,new Rectangle(0, 0, this.base.width,0));
  18.         }
  19.         function coje(e:Event):void{
  20.             this.moviendo=1;
  21.             this.btn.startDrag(false,new Rectangle(0, 0, this.base.width,0));
  22.             stage.addEventListener(MouseEvent.MOUSE_UP,suelta);
  23.         }
  24.         function suelta(e:Event):void{
  25.             this.btn.stopDrag();
  26.             this.moviendo=2;
  27.         }
  28.         function refresca(e:Event):void {
  29.             this.per=this.btn.x*100/(this.base.width);
  30.         }
  31.     }
  32.    
  33. }


y en el main tengo la siguiente función que se ejecuta a cda frame
Código as3:
Ver original
  1. function refresca(event:Event) {
  2.            
  3.             if(progreso.moviendo==0){
  4.                 var percposicion=posicion*100/duracion;
  5.                 progreso.btn.x=percposicion*progreso.base.width/100;
  6.             }else if(progreso.moviendo==2){
  7.                
  8.                 var rearranque=progreso.per*sonido.length/100;
  9.                 pista.stop();
  10.                 pista=sonido.play(rearranque);
  11.                 progreso.moviendo=0;
  12.             }
  13.            
  14.            
  15.            
  16.         }

bueno tambien tengo esta clase instanciada 2 veces, una como volumen y otra como progreso, el caso es que si toco el volumen no pasa nada pero una vez toco el progreso comienza a fallar.
y da igual que toque pero se modifican las variables de los 2 objetos
es como si tocase las variables de los 2 objetos, no se si estoy cometiendo una blasfemia contra la programación orientada a objetos y no me doy cuenta