1

画像を読み込んで、MC someMC に追加します。「something」が true の場合、someVariable は someMC scaleX 番号を取得します。その0.82としましょう。

必要なのは、その数値を Slider オブジェクトの s.value に入れることです。Slider 値を画像スケールの場所にしたいので。

もちろん、変数のスコープの制限により、これは機能しません。

次のようにコードの先頭に変数を設定しようとしました: var someVariable:Number; しかし、それもうまくいきませんでした。

コードは次のとおりです。

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;

何かご意見は?


更新
私はまだ AS3 に慣れていないので、パッケージとクラスを使用する必要のないソリューションを探しています。

更新 2
すべてのコードを Pastebin にアップロードしました。見てください;)

4

3 に答える 3

1

thiscompleteHandler の はドキュメントではありません。someMC.scaleX だけを試してみてください。メインのタイムラインまたはどこでも宣言したと仮定すると、アクセスできるはずです。また、scaleX プロパティの範囲は 0 から 1 までしかないため、Slider が 10:500 からの場合、それは機能しません。私はあなたのために * 100 を入れましたが、スケールを意図したものに修正するために必要な計算を行います。

また、単に変数を変更するのではなく、ハンドラーで Slider の値を明示的に設定する必要があります。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;
于 2009-10-07T00:22:30.083 に答える
1

問題は、ハンドラ関数が Slider の場所に関する情報を持っていないことです。そこsにある変数も実際にはグローバルではなく、クラスまたはムービークリップ内でローカルです。ハンドラーがムービークリップ外のコードによって実行される場合this、クラスのメソッドを使用しない限り、コンテキストはありません。

これを行う最善の方法は、クラスを使用することです。クラスのメンバー変数として作成sすると、ハンドラーは を使用して参照できるようになりますthis。以下のコードのようなものがそれを行うはずです。ライブラリのムービークリップにも必ずリンクしてください。

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
            }
        }
    }
}
于 2009-06-06T15:47:13.503 に答える
0

偶然にもあなたの質問をもう一度見ました。(私を覚えてますか?)

別のドメインからイメージをスケーリングする代わりに、ローダーをスケーリングできるため、ドメイン間のセキュリティの問題は発生しません。

ここの作業サンプル: http://matrixoft.infunity.com/agent/calvin/stackoverflow/getScale.swf

ソースコードはこちら: http://matrixoft.infunity.com/agent/calvin/stackoverflow/getScale.rar

[ps buttonAction レイヤー内のコメント付きコードを参照してください。コメント付きコードは、別のドメインからの画像のスケールを操作しようとしているために失敗します。コメント化されたコードの後のコードは、画像ではなくローダーのスケールを操作します]

于 2009-06-06T17:03:22.357 に答える