【问题标题】:Scaling with BitmapData使用 BitmapData 进行缩放
【发布时间】:2010-02-01 21:58:12
【问题描述】:

我正在开发一个允许用户缩放图像的应用程序。我在使用下面的方法时遇到的问题是缩放总是发生在前一个缩放点上。

例如:如果我将图像放大一倍,然后将图像缩小一倍。我必须缩小两次才能让它回到我想要的位置。

非常感谢任何帮助。

这是我当前的代码:

private var sourceBMD:BitmapData = testImage.source as BitmapData
private var matrixScaleX:Number  = 1;
private var matrixScaleY:Number  = 1;
private var baseScaleX:Number  = .05;
private var baseScaleY:Number = .05;

    private function sourceZoom(zoomType:Boolean = false):void{
        var matrix:Matrix = new Matrix();
        var matriximage:BitmapData;


        if(zoomType){
            matrixScaleX = matrixScaleX + baseScaleX;
            matrixScaleY = matrixScaleY + baseScaleY;
            matrix.a = matrixScaleX;
            matrix.d = matrixScaleY 
        }else{
            matrixScaleX = matrixScaleX - baseScaleX;
            matrixScaleY = matrixScaleY - baseScaleY;
            matrix.a = matrixScaleX;
            matrix.d = matrixScaleY;    
        }


        matriximage = new BitmapData(sourceBMD.width, sourceBMD.height, false, 0x0000000);

        trace('MatrixScaleX: ' + matrixScaleX);
        trace('MatrixScaleY: ' + matrixScaleY);
        trace('BaseScaleX: ' + baseScaleX);
        trace('BaseScaleY: ' + baseScaleY);
        trace('Matrix: ' + ObjectUtil.toString(matrix));

        matriximage.draw(sourceBMD, matrix);                
        testImage.source =  matriximage;    

    }

【问题讨论】:

  • 我对您的问题感到困惑:缩放是否是累积的问题(两次“+”点击 = 10%,一个“+”和一个“-”等于 0%)?或者它不是累积的(两次“+”点击 = 5%,一次“+”和一次“-”等于 -5%)?还是别的什么?
  • 你是对的。如果我放大两次,则必须单击缩小 3 次。我拍摄了一个简单的截屏视频来准确展示我所看到的。 screencast.com/users/rottmanj/folders/Jing/media/…

标签: apache-flex actionscript-3


【解决方案1】:

看起来不错,我怀疑问题出在您的输入或调用它的地方。

为了让它工作,需要在你的代码中发生这样的事件:

capture input -> scale image -> draw image.

由于您似乎将图像设置为在此函数结束时绘制,因此我将检查在输入完成处理后是否正在调用此函数。

你能确认这是怎么回事吗?

【讨论】:

  • 输入来自一个按钮。我可以确认问题不在于点击事件。
  • 我的意思是:如果您从CLICK 设置输入,并在ENTER_FRAME 事件上调整剪辑的大小,则不能保证点击在输入帧之前运行。试着在这个函数的顶部放一个跟踪,在你的按钮上放一个跟踪,看看它们运行的​​顺序。
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 2013-11-08
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多