0

我正在尝试开发像 iSketch 这样的在线绘图应用程序。但不要写,实时绘图部分。

我尝试过这种方式:用户在影片剪辑上绘制图形(影片剪辑名称为“板”,大小为 396*318)然后我将此影片剪辑转换为 BitmapData,通过 getpixel 方法获取所有像素颜色数据(十六进制) . 然后将此数据发送到服务器(带套接字),服务器重新发送给所有用户,客户端代码,通过setPixel方法绘制一个bitmapData。

在这一点上我有一个问题。我的字符串(保存颜色数据)包含 745,550 个字符,这是 162 个字的页面,并且字符串太大。我该怎么做才能获得更好的性能?

我的代码:

        var rect:Rectangle = new Rectangle(258,203,GENIS,YUKSEK);
        // create BitmapData
        var bmd:BitmapData = new BitmapData(GENIS,YUKSEK,true,0);
        bmd.draw(board);

        var s:String = "";
        for (var i:int = 0; i< 396; i++)
        {
            for (var t:int = 0; t< 318; t++)
            {
                var r:uint = bmd.getPixel(i,t);
                s +=  r.toString(16)+ "-";

            }
        }

注意:我注意使用任何翻译工具,对不起我的英语不好。

4

1 回答 1

0

您必须使用 JPG 或 PNG 压缩它,如“bitmapdata.com”所说。您也可以尝试将 BitmapData 直接保存到 ByteArray 而不是发送(有时它具有相似的性能,取决于图形),但我认为最好的方法是发送矢量图形或发送用户绘图步骤,这将是最快的方式。

编辑:使用原生 bitmapdata 函数,如获取/设置像素并对 ByteArray 进行操作,您将获得更好的性能。

于 2012-08-19T08:03:23.503 回答