我正在开发一个允许用户缩放图像的应用程序。我在下面的方法中遇到的问题是缩放始终发生在前一个刻度点上。
例如:如果我将图像向上缩放一个,然后将图像缩小一个。我必须缩小两次才能恢复到我想要的程度。
非常感谢任何帮助。
这是我目前的代码:
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;
}
答案 0 :(得分:1)
看起来很好,我怀疑问题出在你的输入或者被调用的地方。
为了使其工作,事件需要在代码中发生:
capture input -> scale image -> draw image
。
由于您似乎在此函数结束时将图像设置为绘制,我将在输入完成处理后检查是否正在调用此函数。
你能确认发生了什么吗?