0

インターネット経由で一緒にペイントできるアプリケーションを作成しました (Adobe cirrus を使用)。すべてがうまく機能しますが、たとえば、アプリケーションを実行して、友人が接続する前に何かをペイントすると、友人は私がペイントしたものを認識しません。だから私はメソッドを探しています.キャンバスをインターネット経由で送信できる何か(オブジェクト)に変換できます(スプライト全体を送信することはできません.友人のアプリケーションでグラフィックをコピーすることはできません. )。

それでは、これを明確にしましょう。主な質問は、スプライトのグラフィックをオブジェクトに変換する方法です。これにより、スプライトに変換してキャンバスをコピーできます。

回答: 「www.Flextras.com」投稿の DisplayConverter ライブラリを彼の mod と共に使用して、Sprite を BitmapData に変換し、次に ByteArray に変換しました。友達のアプリでは BitmapData を受信できませんでしたが、ByteArray では動作しました。

スプライト -> BitmapData -> ByteArray;
ByteArray -> BitmapData -> スプライト;

//TO SEND
var bitmapdata:BitmapData = DisplayConverter.spriteToBitmapData(palette);
var bytearr:ByteArray = bitmapdata.getPixels(bitmapdata.rect);

//TO RECEIVE
var bmd:BitmapData = new BitmapData(530,430);
bmd.setPixels(bmd.rect, bytearr);       

mysprite.graphics.beginBitmapFill(bmd);
mysprite.graphics.drawRect(0,0,530,430);
mysprite.graphics.endFill();

これが誰かを助けることを願っています

4

2 に答える 2

1

CanvasをBitMapまたはBitMapData(およびその逆)に変換したいと思います。Flex CanvasはSpriteを拡張するため、このようなライブラリを使用できます。関連するコードをコピーするには、これによりスプライトがビットマップに変換されます。

    public static function spriteToBitmap(sprite:Sprite, smoothing:Boolean = false):Bitmap
    {
        var bitmapData:BitmapData = new BitmapData(sprite.width, sprite.height, true, 0x00FFFFFF);
        bitmapData.draw(sprite);

        return new Bitmap(bitmapData, "auto", smoothing);

    } // END FUNCTION spriteToBitmap

これにより、ビットマップがスプライトに変換されます。

    public static function bitmapToSprite(bitmap:Bitmap, smoothing:Boolean = false):Sprite
    {
        var sprite:Sprite = new Sprite();
        sprite.addChild( new Bitmap(bitmap.bitmapData.clone(), "auto", smoothing) );
        return sprite;

    } // END FUNCTION bitmapToSprite

私自身の開発では、このライブラリにmodを追加しました。これにより、実際のBitMapの代わりにBitMapDataを取得できます。したがって、これはスプライトをBitMapDataに変換します。

    public static function spriteToBitmapData(sprite:Sprite):BitmapData
    {
        var bitmapData:BitmapData = new BitmapData(sprite.width, sprite.height, true, 0x00FFFFFF);
        bitmapData.draw(sprite);

        return bitmapData;

    } // END FUNCTION spriteToBitmapData

これにより、BitMapDataが取得され、スプライトに戻されます。

    public static function bitmapDataToSprite(bitmapData:BitmapData, smoothing:Boolean = false):Sprite
    {
        var sprite:Sprite = new Sprite();
        sprite.addChild( new Bitmap(bitmapData.clone(), "auto", smoothing) );
        return sprite;

    } // END FUNCTION bitmapToSprite

BitMapまたはBitMapDataをスプライトに変換し直すときは、おそらくそれをCanvasとしてキャストできないことを覚えておいてください。BitMapDataをサーバーに送信する方法については; この質問を見てください。

于 2012-06-10T22:22:43.467 に答える
0

より良いアプローチは、ピクセルに直接行くのではなく、ユーザーのジェスチャーでデータを作成し、そのデータをキャンバス上の描画として反映させることです。同じデータを他のユーザーに送信すると、同じ図面が得られます。

于 2012-06-10T23:43:47.580 に答える