Pregunta

Me carga una imagen y agregarla a la MC someMC. Si "algo" es cierto, el someVariable obtiene el número someMC scaleX. Digamos que su 0,82.

Lo que necesito es conseguir ese número en el s.value en mi objeto Slider. Desde Quiero que el valor del control deslizante para estar donde mi escala de la imagen es.

Esto por supuesto no funciona debido a limitaciones en el alcance variables.

He intentado fijar la variable en la parte superior del código como el siguiente: var someVariable: Número; pero eso no funcionó bien.

Aquí está el código:

function completeHandler(event:Event):void{
     if (something) {
          var someVariable:Number = this.someMC.scaleX;
     }
}   


var s:Slider = new Slider();
s.maximum = 500;
s.minimum = 10;
s.value = someVariable;

¿Alguna idea?


Actualizar
Estoy buscando una solución sin tener que utilizar el paquete y la clase, ya que no soy tan constante con AS3 todavía.

Actualización 2
He subido todo el código a Pastebin. Echar un vistazo;)

¿Fue útil?

Solución

El this en su completeHandler no es el documento. Intente Es someMC.scaleX, y suponiendo que lo declaró en su línea de tiempo principal o donde sea, debe tener acceso a ella. La propiedad scaleX también solamente un rango de 0 a 1, por lo que si su Slider es de 10: 500 - que no va a trabajar. Pongo * 100 en allí para usted, pero hacer lo matemáticas que se requiere para fijar la escala de lo que la intención.

Además, es necesario establecer explícitamente el valor del deslizador en el controlador, en lugar de simplemente cambiar la var. Las variables no se pasan así en AS3.

function completeHandler(event:Event):void{
         if (something) {
                  var someVariable:Number = someMC.scaleX;
                  s.value = someVariable * 100;
         }
}   


var s:Slider = new Slider();
s.maximum = 500;
s.minimum = 10;

Otros consejos

El problema es la función de controlador no tiene ninguna información sobre dónde está su Slider es. La variable s que tiene allí no es realmente mundial, ya sea, es local dentro de su clase o clip de película. Cuando el controlador de código es ejecutado por fuera de su clip de película, no hay contexto this a menos que utilice un método de una clase.

La mejor manera que puedo pensar en hacer esto es utilizar una clase. Crear s como una variable miembro de la clase, a continuación, el controlador podrá ser referenciado usando this. Algo así como el código de abajo debería hacerlo. Asegúrese de vincularlo a un clip de película biblioteca también.

package {
    import flash.display.MovieClip;

    class MyMovieClip extends MovieClip {
        public var s:Slider;

        public function MyMovieClip {
            var s:Slider = new Slider();
            s.maximum = 500;
            s.minimum = 10;

        }

        function completeHandler(event:Event):void{
            if (something) {
                var someVariable:Number = this.someMC.scaleX;
                this.s.value = someVariable
            }
        }
    }
}

Bien accidentalmente veo tu pregunta de nuevo. (Acuérdate de mí?)

Bueno, en lugar de escalar la imagen de otro dominio, puede escalar el cargador, por lo que no habrá ningún problema de seguridad a través de dominios

una muestra de trabajo aquí: http://matrixoft.infunity.com/agent/calvin/stackoverflow/getScale. SWF

código fuente aquí: http://matrixoft.infunity.com/agent/calvin/stackoverflow/getScale. rar

[p.s. ver el código comentado dentro de la capa buttonAction, el código comentado falla causa que está tratando de manipular a la escala de una imagen de otro dominio. El código comentado código después de manipular la escala del cargador, no imagen]

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top