0

iSketchのようなオンライン描画アプリケーションを開発しようとしています。しかし、リアルタイムのドローイン部分を書いてはいけません。

私はこの方法を試しました:ユーザーはムービークリップにグラフィックを描画します(ムービークリップ名は「ボード」で、サイズは396 * 318)そして、このムービークリップをBitmapDataに変換し、getpixelメソッドですべてのピクセルカラーデータ(16進数)を取得します。このデータをサーバー(ソケット付き)に送信するよりも、サーバーをすべてのユーザーに再送信し、クライアントコードを使用して、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

「bitmapdata.com」のようにJPGまたはPNGを使用して圧縮する必要があります。また、BitmapData を ByteArray に直接保存してから送信することもできます (場合によっては同様のパフォーマンスが得られますが、グラフィックに依存します) が、ベクトル グラフィックを送信するか、ユーザーに描画ステップを送信することが最善の方法だと思います。

edit : ピクセルの取得/設定などのネイティブ bitmapdata 関数を使用し、 ByteArray を操作すると、パフォーマンスが向上します。

于 2012-08-19T08:03:23.503 に答える