2009-07-02 7 views
1

私は、親ムービークリップを変換する方法で子供ムービークリップを変換する方法については質問しています...私はイメージローダーを保持しているムービークリップとムービークリップとしていくつかのハンドルを持っています。ハンドルムービークリップは、マウスイベントをリッスンして、親ムービークリップの回転と平行移動をスケーリングするために使用されます。親ムービークリップが回転している間に親ムービークリップに従ってもらいたいが、ムービークリップのサイズを変更したり、ムービークリップを回転させたりするときの問題も、回転と拡大縮小が行われますが、ハンドルの拡大は望ましくありません。子のムービークリップをスケールしないでください。

スケーリングからハンドルを避ける方法はありますか?あなたは、私は物事を再配置することを構造で立ち往生していない場合

はあなた

答えて

3

ありがとうございます。例えば、私はこのような種類のそれを構築します:

- container 
    - handles 
    - image loader 

あなたが唯一の正しい場所にハンドルを配置するのではなく、スケーリングの問題に対処を心配する必要がこの方法です。

同じ構造を維持する必要がある場合は、ハンドルのスケールを親のスケールの逆数に設定する必要があります。たとえば、親の位取りが2の場合、ハンドルの位取りを0.5にします。したがって、ハンドルのスケールを計算するために必要なのは、親のスケールで1を除算することです。

0
    は、親MC(あなたにも scaleXscaleYを行うことができます)に set heightset width関数をオーバーライドします
  1. scaleX子供の(高さ)またはscaleY(幅用)MCに1./scaleX(幅を設定/ scaleYのscaleXプロパティをチェックし、スーパーを呼び出すことによって、値を設定し、オーバーライド機能で
  2. 簡単だった)又は1./scaleY(高さ)

0

onEnterFrameハンドラなどで、scaleXとscaleYを1 /(parent.scaleX)と1 /(parent.scaleY)に設定します。

inside_mc.addEventListener(Event.ENTER_FRAME, function(){ 
    inside_mc.scaleX = 1/inside_mc.parent.scaleX; 
    inside_mc.scaleY = 1/inside_mc.parent.scaleY; 
}); 
4

はこれを試してみてください。それを行う最善の方法(私が眠っている間に私に来たbtw)は、新しい子を作成し、それをbackgroundMC(名前を明確にする必要があります)と呼び、親ではなくbackgroundMCのサイズを変更することです。親は自動的にそのサイズにリサイズされますが、子ウィンドウは拡大縮小されません

+0

すごい!これを使って私のサブオブジェクトの幅を自由に設定することができました。また、私はこの方法で任意の子オブジェクトにscale9grid fineを使うことができます: this.mychild.scaleX = 1/this.scaleX; this.mychild.width * = this.scaleX; ありがとう! – XPac27

0

何を説明すると、それを行うには、より複雑な方法であり、それはサイズを変更しない/正確に再配置し、より多くのCPUを食べている:

関連する問題