Actionscript数学计算在浏览器中表现不同

时间:2012-02-13 22:43:19

标签: flash actionscript

这真让我难过:我有一个小应用程序,允许用户放大/缩小,旋转,水平翻转和操纵照片的颜色。照片通过Loader类加载。该应用程序在开发环境中完美运行,但如果在浏览器中测试失败。我做了一点调试,我注意到矩阵计算中的一个值等于dev环境中的正值,但在浏览器中是负值(在完全相同的条件下)。我在这里错过了什么?

以下是我在测试期间调用的两个函数的代码:

    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在浏览器环境中的表述方式不同。

非常感谢你的帮助。

杰森

1 个答案:

答案 0 :(得分:2)

最可能的事情是在图像完全加载之前调用在loader.content上运行的函数,结果是零和NaN值会弄乱你的进程。

尝试禁用此功能,直到加载图像并且Loader.contentLoaderInfo已调度其COMPLETE事件为止。