我在flash(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)
但这也不完全正确。一切都变得太大或太小。
有什么想法吗?
你可能想多了。
//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;
之后您可能唯一要做的就是重新定位,如果它们没有在其中心点上注册。