使用我在網上找到的一些代碼幫助我爲我正在嘗試的程序創建縮放功能。它是製作一個允許用戶標記點的地圖。目前代碼只能在地圖圖像上縮放,但我不能讓點圖標重新對齊到原來的位置。我無法鍛鍊它的數學。縮放點以匹配背景。 Actionscript 3
代碼,以放大和縮小
if (mev.shiftKey) {
image.scaleX = Math.max(scaleFactor*image.scaleX, minScale);
image.scaleY = Math.max(scaleFactor*image.scaleY, minScale);
}
if (mev.ctrlKey) {
image.scaleX = Math.min(1/scaleFactor*image.scaleX, maxScale);
image.scaleY = Math.min(1/scaleFactor*image.scaleY, maxScale);
mat = image.transform.matrix.clone();
MatrixTransformer.matchInternalPointWithExternal(mat,internalCenter,externalCenter);
image.transform.matrix=mat;
這使得圖像與下列因素有關
public var scaleFactor:Number = 0.8;
public var minScale:Number = 0.25;
public var maxScale:Number = 2.0;
,當我嘗試移動覆蓋在指針的圖標,會出現問題擴大這個圖片。目前他們不會增長或縮小,但他們無法獲得數學,讓他們將正確數量的像素從鼠標位置移開,以便它們仍然保持一致。目前我使用下面的公式
//decrease zoom
stage.getChildAt(i).x = stage.getChildAt(i).x * scaleFactor;
//increase zoom
stage.getChildAt(i2).x = stage.getChildAt(i2).x/scaleFactor;
有什麼想法?我正在使用的代碼來自於 http://www.flashandmath.com/howtos/zoom/
不能因素適用於x屬性直接這會給你錯了RESU LTS。相反,首先計算x位置應該在哪裏不縮放,然後應用比例因子,然後設置x屬性。 – BotMaster
你好,試過了。當我放置一個別針/指針時,我可以得到正確的位置,但是當我添加比例因子時,它不會適當移動。 stage.getChildAt(i).x是縮放前的正確位置。我確定我需要一個公式,但不能想到它 – user1524122
這種功能很容易實現,因爲它只涉及一個因子值。有明確的靜態位置x和y和比例因子適用於這兩個,這是它的結束。作爲一個例子,一個定義好的x:100,y:200的比例因子爲0.5:x:50,y:100。沒有什麼比這更難的了。您可以通過將新的x,y位置(縮放)除以縮放因子來檢查是否正確縮放,結果應始終爲相同的值。 – BotMaster