2009-07-14 14 views
0

例:親子制約

var circle1 :Canvas = new Canvas(); 
var circle2 :Canvas = new Canvas(); 

circle1.addChild(circle2) 
circle1.scaleX = 2; 

にスケーリングされますCIRCLE1する子であるので、フラッシュがCIRCLE2をレンダリングするとき、前の例の後。 circle2に影響を与えずにcircle1をスケールする方法はありますか?circle2に何をして同じスケールにすることができますか?

答えて

1

はあなたを助けるかもしれない:http://natejc.com/blog/?p=68

+0

Ye thx。、あなたのリンクとこのリンク:http://codevil.in/?p=63助けてくれました。 – Alexandru

2

これは非常に簡単です。親のサイズを2倍にしたという事実を補うだけです。

var circle1 :Canvas = new Canvas(); 
var circle2 :Canvas = new Canvas(); 

circle1.addChild(circle2) 
circle1.scaleX = 2; 
circle2.scaleX = .5; // Added 

A多分問題をスケーリングの世話をする便利な機能は、次のようになります。

function setParentOnlyScaleX(parent:Canvas, scale:Number):void { 
    parent.scaleX = scale; 
    for (var i = 0; i < parent.numChildren - 1; ++i) { 
     var child:Canvas = circle1.getChildAt(i); 
     child.scaleX = 1/scale; 
    } 
} 

最初のスニペット次のようになります。

var circle1 :Canvas = new Canvas(); 
var circle2 :Canvas = new Canvas(); 

circle1.addChild(circle2) 
setParentOnlyScale(circle1, 2); 
+0

ここでの問題は、MOUSE_MOVEイベントのスケールを行うことです。ですから、マウスの移動ごとに子スケールを親スケールで変更すると、間違った値になります。 RENDERが子行列を変更する前にRENDERがそれを元に戻す前にイベントをキャッチできるかどうか。 RENDERの完了後にイベントがありますか? – Alexandru

+0

私はコードを修正しました。しかし、間違った価値を持つことはどういう意味ですか?この方法では、子スプライトは常に同じサイズになります。 – Dykam