2012-12-12 54 views
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 
} 

回答

2

刚在你的夹子形状绘制,并倾向于借鉴分配到一个位图

// 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(); 
} 
一个位图数据夹内