2009-06-06 14 views
1

イメージをロードしてMC someMCに追加します。 「何か」が真の場合、someVariableはsomeMCのscaleX番号を取得します。 0.82としましょう。グローバル変数の問題

私が必要とするのは、Sliderオブジェクトのs.valueにその数値を取得することです。私はスライダの値を私の画像のスケールの位置にしたいからです。

可変範囲の制限があるため、これはもちろん動作しません。

私はこのようなコードの先頭に変数を設定しようとしました: 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
I've uploaded all the code to Pastebin. Take a look ;)

+0

私がムービークリップの中にいて、すでにglobal.asをインポートしていても、ムービークリップにインポートする必要がありますか? –

答えて

1

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

また、varを変更するのではなく、ハンドラで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; 
1

問題は、あなたのハンドラ関数は、あなたのスライダーがどこにあるかについての情報を持っていないです。あなたが持っている変数はです。実際にはグローバルでもなく、クラス内やムービークリップ内でローカルです。ムービークリップの外側のコードでハンドラーを実行すると、クラスのメソッドを使用しない限り、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 
      } 
     } 
    } 
} 
+0

kekoav:アップデートを参照;) –

0

質問が間違って表示されます。 (私を覚えている?)

をまあ代わりに別のドメインからの画像をスケーリングの、あなたはローダーを拡張することができますので、ここでの作業サンプル任意のクロスドメインセキュリティ問題

がありません。 http://matrixoft.infunity.com/agent/calvin/stackoverflow/getScale.swf

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

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

+0

私はそれを動作させることができません。自分のコードを使って私を見せてもらえますか? http://pastebin.com/m7c37b3cf –

+0

おそらく52行目をthis.container.addChild(event.target.content)から変更してみてください。 to this.container.addChild(event.target); のように、Loaderコンテンツの代わりにLoaderのscaleXを変更する場合は、私の例の – Unreality

+0

と同じように動作しますか? – Unreality

関連する問題