2012-02-13 38 views
1

這實在讓我感到困惑:我有一個小應用程序,它允許用戶放大/縮小,旋轉,水平翻轉和操縱照片的顏色。該照片通過Loader類加載。該應用程序在開發環境中完美工作,但如果在瀏覽器中測試失敗。我做了一些調試,發現矩陣計算中的一個值等於dev環境中的正值,而瀏覽器中的值爲負值(在完全相同的條件下)。我在這裏錯過了什麼?Actionscript數學計算在瀏覽器中的行爲有所不同

這裏是我的兩個,我的測試過程中被調用的功能代碼:

function zoomOut(e:MouseEvent):void{ 
    matrix = imageLoader.content.transform.matrix; 
    imageLoader.content.scaleY = imageLoader.content.scaleY*.90; 
    imageLoader.content.scaleX = imageLoader.content.scaleX*.90; 
    statusText.text = imageLoader.content.scaleY.toString(); 
    if(matrix.a < 0){ 
    matrix.a = -1*imageLoader.content.scaleY; 
    matrix.tx = imageLoader.content.width; 
    }else{ 
     matrix.a = imageLoader.content.scaleY; 
    } 
    matrix.d = imageLoader.content.scaleX; 


matrix.transformPoint(newPoint(imageLoader.content.width/2,imageLoader.content.height/2)); 
     imageLoader.content.transform.matrix = matrix; 
    } 

     function flipHorizontal(e:MouseEvent):void { 
      matrix =imageLoader.content.transform.matrix; 
      matrix.transformPoint(new Point(imageLoader.content.width/2,imageLoader.content.height/2)); 
    if (matrix.a>0) { 
    matrix.a=-1*matrix.a; 
    matrix.tx=imageLoader.content.width+imageLoader.content.x; 
    } else { 
    matrix.a=-1*matrix.a; 
    matrix.tx=imageLoader.content.x-imageLoader.content.width; 
    } 
    imageLoader.content.transform.matrix=matrix; 
    } 

從我可以告訴,imageLoader.content.scaleY在瀏覽器環境等同不同。

非常感謝您的幫助。

傑森

回答

2

最有可能的是,在loader.content操作函數獲取調用圖像完全加載之前,結果是零和NaN值是弄亂你的過程。

嘗試禁用此函數,直到圖像加載並且Loader.contentLoaderInfo調度其COMPLETE事件。

+0

嗨塑料鱘。我感謝您的幫助。我發現問題在哪裏,但我不知道爲什麼。如果查看flipHorizo​​ntal函數,您將看到以下行:imageLoader.content.transform.matrix = matrix;無論出於何種原因,這個公式在瀏覽器中都不起作用。不過在開發環境中。再次,不知道爲什麼。謝謝。 – Jason 2012-02-16 15:54:16

+0

修正了它!決定簡化zoomOut函數,並使用矩陣變換進行更改:'function zoomOut(e:MouseEvent):void {matrix.scale(.9,.9);} \t imageLoader.content.transform.matrix = matrix; }'再次感謝您的幫助。 – Jason 2012-02-16 18:18:01

相關問題