2009-07-14 7 views
0

예 : 예 후부모 - 자식 제약

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

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

그것은이 확장됩니다 CIRCLE1하는 아이가 있기 때문에 플래시 CIRCLE2를 렌더링 할 때 전. circle2에 영향을주지 않고 circle1을 스케일 할 수있는 방법이 있습니까? 아니면 circle2에 할 수있는 것이 있습니까? 그래서 같은 스케일을 가질 수 있습니까?

답변

2

매우 간단합니다. 부모의 크기를 두 배로 늘리면됩니다. 확장 문제를 돌봐

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

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

어쩌면 편리한 기능은, 수 :

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