2012-08-24 3 views
1

Plastic Sturgeon (http://plasticsturgeon.com/2010/09/as3-get-visible-bounds-of-transparent-display-object)에서 수정 된이 함수를 사용하고 있습니다. /)를 사용하여 표시 객체의 가시 경계를 가져옵니다.표시 객체의 AS3 가시 경계가 일관성없이 오프셋 됨

public static function getVisibleBounds(source:DisplayObject):Rectangle 
{ 
    var matrix:Matrix = source.transform.concatenatedMatrix;  
    var data:BitmapData = new BitmapData(1000, 1000,true,0x00000000); 
    data.draw(source, matrix); 
    var bounds:Rectangle = data.getColorBoundsRect(0xFFFFFFFF,0x000000,false); 
    data.dispose(); 
    return bounds; 
} 

그러나 경계는 스테이지 크기에 따라 개체에서 오프셋됩니다. 기본 스테이지 크기 (550px x 400px)에서는 완벽하게 작동하지만 두 치수 중 하나를 증가 시키면 해당 치수와 반대 방향으로 이동합니다 (x를 증가 시키면 객체에서 왼쪽으로 오프셋되고 y를 증가 시키면 객체와 아래쪽으로 오프셋됩니다.)이 작업은 일관되게 수행되지 않습니다. 오프셋 (스테이지 치수)은 특정 스테이지 범위의 범위에서 0이므로 해당 범위보다 큰 스테이지 치수의 경우 스테이지 치수와 함께 빠르게 상승하므로 오프셋 (스테이지 치수)은 비선형입니다. 오프셋은 스테이지 크기를 어떻게 변경했는지에 따라 다릅니다. 만약 400px에서 1000px로 단계적으로 이동하면 중간에 영화를 테스트하지 않고 중간에 400px에서 1000px로 이동하는 경우와 경계가 다르게 상쇄됩니다. 경우에 따라 오프셋은 한 차원 만 변경되고 다른 차원은 아무 것도 수행하지 않는 경우가 있습니다. 또한 게시 된 파일은 테스트와 다릅니다. 필자는 외부 파일 대신 표시 객체와 동일한 파일에 함수를 넣으려고했지만 여전히 신뢰할 수 없습니다. 스테이지 크기와이 모든 다른 것들에 관계없이 디스플레이 객체의 실제 보이는 경계를 안정적으로 제공 할 수있는 수정 사항이 있는지 궁금합니다.

내 컴퓨터는 Windows Vista Home Premium 32 비트를 실행하며 Adobe Flash Professional CS5.5를 사용하고 있습니다.

답변

1

일부 스테이지 속성을 설정하여 해결할 수있는 문제 일 수 있습니다. 먼저 확장 할 수없는 무대를 설정하려고 :

this.stage.scaleMode = "noScale"; 

그런 다음 몇 가지 정렬 규칙을 설정

this.stage.align = "TL"; 

을 그 도움이된다면, 그것은 당신의 비트 맵 복사가 확장 버그 몇 가지 문제로 실행중인 것을 할 수있다.

+0

감사합니다. 이 작동합니다. –

관련 문제