2012-06-02 49 views
0

我有一個5000像素乘5000像素的圖像。它會定期放大或縮小以適應圖像的不同部分。如何使用FigPanZoom正確創建相對於圖像的點?

我正在製作一個函數,它專注於圖像上的不同位置(如地圖),然後放大到我指定的特定比例。

我把我的觀點轉化爲這個功能(例如新的Point(2000,2500))),但是這總是會因爲它不是特定的相對於圖像而中斷。

在任何給定的時間,我如何使圖像在給定的比例下與圖像相關?

附加信息:我在此處使用指南http://www.adobe.com/devnet/flex/samples/fig_panzoom.html進行平移和縮放功能。

解決:

我的一個陷阱是,我使用的是可能bitmapScaleFactor> 1這將陷入困境的縮放。這是我用過的最後一個功能。

protected function testFocus(p:Point):void 
     { 
      var content:ContentRectangle = boardViewer._contentRectangle; 
      var panToPoint:PanToPointCommand = new PanToPointCommand(boardViewer, content); 
      var scale:Number = boardViewer.bitmapScaleFactor; 

      var location = new Point((p.x*scale)+content.x, (p.y*scale)+content.y);    
      var center = new Point(boardViewer.width/2, boardViewer.height/2); 

      //Move the point to the center 
      panToPoint.fromPoint = location; 
      panToPoint.toPoint = center; 
      panToPoint.execute(); 
     } 
+0

我不知道我理解這個功能是如何使用您發送的地步。也許你應該分享你的功能背後的代碼。 – JeffryHouser

+0

發生的所有事情都需要點並在圖像上的那個點模擬鼠標點擊。在我的問題中,該點的座標(2000,5000)表示圖像中的像素x和y,而不是舞臺。 – buddyp450

+0

不知道您的DisplayObject層次結構是什麼,很難說最好的方法是什麼,但您可以查看文章:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7dca.html#談論翻譯座標空間的WS5b3ccc516d4fbf351e63e3d118a9b90204-7dc5。它可能會讓你指向正確的方向。 – martineno

回答

1

我還沒有測試過這個,但是如何使用應用於圖像的比例因子來改變點座標。

例如

var scaler:Number = 0.5; 

image.scaleX = image.scaleY = scaler; 

new Point(2000*scaler,2500*scaler); 
+0

這種方法的問題在於它不僅僅是相對於比例。我需要圖像中的實際點,因爲圖像也是平移的,因此圖像的點(100,200)可能位於特定實例的位置(50,200)或(200,50)。 所以雖然這可能會給我正確的點相對於比例,它只適用於圖像停靠在(0,0)。 – buddyp450

+0

我做了這個和martineno的評論有關利用我已經添加到OP的內容。謝謝。 – buddyp450

0

您是否在尋找DisplayObject.mouseX /mouseY?但是,這些不考慮任何輪換。

採取輪流進去,你可以這樣做(未經測試的代碼):

var mat:Matrix = image.transform.concatenatedMatrix; 
mat.invert(); 

// now use mat to transform point from 'stage space' to 'image space' 
var pImage:Point = mat.transform(new Point(stage.mouseX, stage.mouseY)); 
相關問題