2014-03-24 3 views
0

Sprite를 확장하는 Container라는 클래스가 있고 scaleX와 scaleY를 항상 1로 유지하면서 width와 height를 수동으로 설정할 수있는 기능이 추가되었습니다.Flash는 하위를 기반으로 DisplayObject의 크기를 어떻게 계산합니까?

저는 이러한 클래스를 스프라이트에 넣었으며 스프라이트 자체가 내부 계산, 실제로 게터에서 너비/높이를 가져 오지 않습니다.

이 수학은 무엇이며 어떻게 내부 표준을 수행하면서 스프라이트가 확장 된 너비와 높이 게터를 고려하도록 확장 할 수 있습니까?

답변

1

수학은 모든 자식 및 자체 그래픽에서 전체 스프라이트의 표시 목록 가장자리의 좌표를 결정하기 위해 호출되는 getBoundary() 함수 내에 있습니다. 그래서 스케일을 조정하지 않고 너비를 설정하는 것이 유용하지 않을 수 있습니다. 하지만 여전히 이것을하고 싶다면 먼저 너비와 높이가 설정된 필드를 만들고 container.widthcontainer.height 할당에서 업데이트하고 너비와 높이의 getter를 오버라이드하고 저장된 너비/높이의 최대 값을 반환하고 super.widthsuper.height의 호출

var storedWidth:Number=0; // to not have NaNs 
public override function get width():Number { 
    var w:Number=super.width; // get width from that math 
    if (storedWidth>w) w=storedWidth; // or any other logic, to operate these values 
    return w; 
} 

높이와 동일한 접근법.

+0

storedWidth의 자리 표시 자로 NaN을 사용합니다. storedWidth가 NaN이면 super.width를 사용하고, 그렇지 않으면 storedWidth를 사용합니다 (super.width보다 작 으면). 나는 getBoundary()에 대한 연구를 할 것이다. 고맙습니다. – Discipol

관련 문제