BitmapData.draw忽略了iphone AIR上的矩阵

时间:2012-06-20 07:03:42

标签: iphone actionscript-3 air bitmapdata

我已经创建了一个应用,我正在用

截取屏幕截图

var bitmapData:BitmapData = new BitmapData(blah, blah) bitmapData.draw(blah, matrix);

当我在我的电脑上运行它时工作正常,但是当我将它导出并放在我的iphone上时 bitmapData是完全错误的,奇怪的是不合适的位置和我的所有测试,有时候是不同的大小。

我想要做的事情非常简单易行,我无法弄清楚为什么它不能在iPhone上工作。帮助!

1 个答案:

答案 0 :(得分:0)

如何创建矩阵?

试试这个:我前段时间找到它了......并且稍微改进了一下......

    /** create a bitmap from a displayObject */
    public static function toBitmap(value:DisplayObject, inverse:Boolean = true):Bitmap
    {
        // help: http://darylteo.com/blog/2006/12/17/bitmapdatadraw/

        var defaultMartix:Matrix = value.transform.matrix;

        //Find occupied region
        var region:Rectangle = new Rectangle();
        region = value.getBounds(value);

        //Build Matrix Transform
        var matrix:Matrix = new Matrix(1, 0, 0, 1, -region.x, -region.y);

        value.transform.matrix = matrix;

        var bmpData:BitmapData = new BitmapData(value.width, value.height, true, undefined);
        bmpData.draw(value, matrix, null, null, null, true);

        var bmp:Bitmap = new Bitmap(bmpData, "auto", true);

        if (inverse)
        {
            //Re apply an Inverse Matrix
            matrix = new Matrix(1, 0, 0, 1, region.x, region.y);
            bmp.transform.matrix = matrix;
        }

        value.transform.matrix = defaultMartix;

        return bmp;
    }