1

플래시 (as3)의 독점적 인 파노라마 뷰어 응용 프로그램 위에 클릭 가능한 핫스팟을 중첩시키고있어 사용자가 변화하는 시야각에 따라 핫스팟을 확장해야합니다 확대/축소하지만 어떤 수식을 사용해야할지 모르겠습니다.시야와 일치하는 객체 스케일링

최대 및 최소 시야각을 각각 90 및 25로 설정했습니다. 파노라마 소프트웨어의 업체에서

: 나는 아이콘의 크기를 계산하는 방법에 대한 몇 가지 제안을받은 적이 이것은 나를 위해 작동하지 않는 것

Scale => 1/tan(FoV) 

. 그리고 :

scalar += (ZOOM_SCALE_UPPER - ZOOM_SCALE_LOWER) * (ZOOM_LIMIT_OUT - tempFOV )/(ZOOM_LIMIT_OUT-ZOOM_LIMIT_IN) ; 

hotspot.scaleX = hotspot.scaleY = scalar; 

내게 가까이 가져옵니다 만, 어떤 점에서 핫스팟은 파노라마 확장을 계속하더라도 확장을 중지합니다. 나는 단지 다음과 같은 것을 할 수 있다고 생각했다.

diffFOV = previousFOV - currentFOV. 
hotspot.scale = currentScale*(1-diffFov) 

그러나 그것은 옳지 않다. 모든 것이 너무 크거나 작아집니다.

아이디어가 있으십니까?

답변

1

생각하고 있을지 모르겠다. 그들의 중심점에 등록되지 않은 경우 이후에해야 할 수 있습니다

//assume we change the scale 
var NEW_SCALE:Number = currentScale*(1-(previousFOV-currentFOV)); 

//1. change the scale of the parent containing both the view and the hotspots 
viewSprite.scale = NEW_SCALE; 
//this way the hotspot and the panorama will scale together 

//2. if they are not in the same parent... then set them both to the same view 
hotspot.scale = panorama.scale; 

만 것입니다 위치를 변경.

+0

이봐, 네가 옳았 어. 나는 이것을 생각하고있다. 먼저 FOV :(lastFOV-curFieldOfView)/lastFOV;의 변화율을 계산해야합니다. 그런 다음 동일한 비율 변경을 클립 스케일에 적용해야합니다. – mheavers