0

ユーザーが画面上で指をドラッグして基本的な線/形状などを描画できるAndroidで使用する簡単な描画プロトタイプを作成しています。同じ領域を描画するとパフォーマンスの問題が発生し、しばらくするとパフォーマンスが低下しますかなり。

線が描画された後 (タッチ開始、タッチ移動、タッチ終了イベント チェーンの後)、新しく描画された線を残りの描画を含むビットマップに格納する方法があるかどうか疑問に思っています。

私は見てきましたbitmap.merge()が、これは色の混合に関しては問題を引き起こすでしょう. 新しい「図面」を以前に描いたものの上に保存したいだけです。

// To hold current 'drawing'
var clip:Shape = new Shape();   

// To hold past 'drawings'
var drawing:Bitmap = new Bitmap();

public function Main()
{
    Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 

    addChild(drawing);
    addChild (clip);

    addEventListener(TouchEvent.TOUCH_BEGIN, tBegin);
    addEventListener(TouchEvent.TOUCH_MOVE, tMove);
    addEventListener(TouchEvent.TOUCH_END, tEnd);
}

private function tBegin(e:TouchEvent):void 
{
    clip.graphics.lineStyle(28,0x000000);
    clip.graphics.moveTo(mouseX, mouseY);  
}

private function tMove(e:TouchEvent):void 
{
    clip.graphics.lineTo(mouseX, mouseY);
}

private function tEnd(e:TouchEvent):void 
{
    // Save new graphics and merge with drawing
}
4

1 に答える 1

2

クリップ形状で描画を続け、tEnd でビットマップに割り当てられた bitmapData 内にクリップを描画します。

// To hold current 'drawing'
var bmpData:BitmapData = new BitmapData (800, 800) // put here your desired size

var clip:Shape = new Shape();   

// To hold past 'drawings'
var drawing:Bitmap = new Bitmap(bmpData);

public function Main()
{
    Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 

    addChild(drawing);
    addChild (clip);



    addEventListener(TouchEvent.TOUCH_BEGIN, tBegin);
    addEventListener(TouchEvent.TOUCH_MOVE, tMove);
    addEventListener(TouchEvent.TOUCH_END, tEnd);
}

private function tBegin(e:TouchEvent):void 
{
    clip.graphics.lineStyle(28,0x000000);
    clip.graphics.moveTo(mouseX, mouseY);  
}

private function tMove(e:TouchEvent):void 
{
    clip.graphics.lineTo(mouseX, mouseY);
}

private function tEnd(e:TouchEvent):void 
{
    // Save new graphics and merge with drawing
    bmpData.draw (clip);
    clip.graphics.clear();
}
于 2012-12-12T15:23:32.143 に答える