Frage

Ich lade Sie ein Bild und fügen Sie es dem MC someMC. Wenn „etwas“ wahr ist, bekommt die somevariable die someMC scaleX Nummer. Lassen Sie uns seine 0,82 sagen.

Was ich brauche, ist diese Zahl in den s.value in meinem Slider-Objekt zu erhalten. Da ich den Slider Wert sein will, wo mein Bild Maßstab ist.

Das ist natürlich nicht funktioniert, weil die variable Umfang Einschränkungen.

Ich habe versucht, die Variable an der Spitze des Code wie folgt einstellen: var somevariable: Number; aber das hat nicht funktioniert.

Hier ist der Code:

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;

Alle Gedanken?


Update
Ich bin auf der Suche nach einer Lösung ohne Paket und Klasse zu verwenden, da ich mit AS3 noch nicht so stabil bin.

Update 2
Ich habe den gesamten Code zu Pastebin hochgeladen. Werfen Sie einen Blick;)

War es hilfreich?

Lösung

Die this in Ihrem complete ist nicht das Dokument. Versuchen Sie, nur someMC.scaleX, und vorausgesetzt, Sie erklären es auf Ihrem Haupt-Timeline oder wo auch immer, es sollte darauf Zugriff hat. Die scaleX Eigenschaft auch reicht nur von 0 auf 1, also, wenn Ihr Slider von 10: 500 - das ist nicht zur Arbeit gehen. Ich habe * 100 in für Sie da, sondern tun, was Mathematik erforderlich ist, die Waage zu reparieren, was Sie beabsichtigen.

Außerdem müssen Sie explizit auf den Slider den Wert in dem Handler gesetzt, anstatt nur die var zu ändern. Variablen werden nicht wie in AS3 übergeben.

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;

Andere Tipps

Das Problem ist Ihre Handler-Funktion hat keine Informationen darüber, wo Ihre Slider ist. Die s Variable, die Sie haben, gibt es auch nicht wirklich global, ist es lokal in Ihrer Klasse oder Movieclip. Wenn der Handler von Code außerhalb Ihres MovieClip- ausgeführt wird, gibt es keinen this Kontext, wenn Sie eine Methode aus einer Klasse verwendet werden.

Der beste Weg, die ich denken kann, dies zu tun ist, eine Klasse zu verwenden. Erstellen s als Membervariable auf die Klasse, dann wird Ihr Handler der Lage sein, es referenziert werden this verwenden. So etwas wie der Code unten sollte es tun. Achten Sie darauf, es verbinden zu einer Bibliothek MovieClip- auch.

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
            }
        }
    }
}

Nun versehentlich sehe ich Ihre Frage wieder. (Erinnere mich?)

Nun, anstatt das Bild aus einer anderen Domäne der Skalierung können Sie den Loader skalieren, so dass es keine Cross-Domain-Sicherheitsproblem sein

ein funktionstüchtiges Beispiel hier: http://matrixoft.infunity.com/agent/calvin/stackoverflow/getScale. swf

Quellcode hier: http://matrixoft.infunity.com/agent/calvin/stackoverflow/getScale. rar

[P. S. siehe den kommentierten Code innerhalb der buttonAction Schicht, schlägt der kommentierten Code weil es versucht, das Ausmaß eines Bildes aus einer anderen Domäne zu manipulieren. Der Code nach kommentierten Code den Umfang des Loader, nicht Bild]

manipulieren
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top