取得したマウス座標をただ直線で結ぶだけのコードが
グルグルと線を描いてると、何故かどんどん重くなってカクカクになる。
//抜粋-----------------------------------------------------
private var dragStart:Point = null;
private function onMouseDown( e: MouseEvent ): void{
if( dragStart == null ){
dragStart = new Point( mouseX, mouseY );
}
}
private function onMouseMove( e: MouseEvent ): void{
if( dragStart ){
//draw
var g:Graphics = sp.graphics;
g.lineStyle( 4, 0x661111 );
g.moveTo( dragStart.x, dragStart.y );
g.lineTo( mouseX, mouseY );
dragStart.x = mouseX;
dragStart.y = mouseY;
}
}
private function onMouseUp( e: MouseEvent ): void{
dragStart = null;
}
//ここまで---------------------------------------------------------
原因分からず困る。
試しにgraphics.clear()を呼ぶと最初の軽い状態に戻るんで、SpriteかGraphics。
で、気が付く。
Spriteを拡大縮小回転しても綺麗なのは内部で描画したベクターのObject持ってるから。
それが多くなるのが原因?もしかして追加描画するたびに全ベクターデータを再描画している?
(結局そうなのかどうなのかは分からず)
リファレンスを探すとSprite.cacheAsBitmapと言うそれっぽい物があるんで、
これをtrueで解決!と思ったのにやっぱり変わらず・・・
Google先生で調べると、「変化が無かった時にキャッシュを使う」だけらしい。
結局上のコードはGraphicsで描いてはbmp.bitmapData.draw()することに。
//抜粋-----------------------------------------------------
private function onMouseMove( e: MouseEvent ): void{
if( dragStart ){
//draw
var tmpSp:Sprite = new Sprite();
var g:Graphics = tmpSp.graphics;
g.clear();
g.lineStyle( 4, 0x661111 );
g.moveTo( dragStart.x, dragStart.y );
g.lineTo( mouseX, mouseY );
dragStart.x = mouseX;
dragStart.y = mouseY;
bmp.bitmapData.draw( tmpSp );
}
}
//ここまで-----------------------------------------------------
解決したけど、なんかアホな事をしてる気がしてすっきりしない。
グルグルと線を描いてると、何故かどんどん重くなってカクカクになる。
//抜粋-----------------------------------------------------
private var dragStart:Point = null;
private function onMouseDown( e: MouseEvent ): void{
if( dragStart == null ){
dragStart = new Point( mouseX, mouseY );
}
}
private function onMouseMove( e: MouseEvent ): void{
if( dragStart ){
//draw
var g:Graphics = sp.graphics;
g.lineStyle( 4, 0x661111 );
g.moveTo( dragStart.x, dragStart.y );
g.lineTo( mouseX, mouseY );
dragStart.x = mouseX;
dragStart.y = mouseY;
}
}
private function onMouseUp( e: MouseEvent ): void{
dragStart = null;
}
//ここまで---------------------------------------------------------
原因分からず困る。
試しにgraphics.clear()を呼ぶと最初の軽い状態に戻るんで、SpriteかGraphics。
で、気が付く。
Spriteを拡大縮小回転しても綺麗なのは内部で描画したベクターのObject持ってるから。
それが多くなるのが原因?もしかして追加描画するたびに全ベクターデータを再描画している?
(結局そうなのかどうなのかは分からず)
リファレンスを探すとSprite.cacheAsBitmapと言うそれっぽい物があるんで、
これをtrueで解決!と思ったのにやっぱり変わらず・・・
Google先生で調べると、「変化が無かった時にキャッシュを使う」だけらしい。
結局上のコードはGraphicsで描いてはbmp.bitmapData.draw()することに。
//抜粋-----------------------------------------------------
private function onMouseMove( e: MouseEvent ): void{
if( dragStart ){
//draw
var tmpSp:Sprite = new Sprite();
var g:Graphics = tmpSp.graphics;
g.clear();
g.lineStyle( 4, 0x661111 );
g.moveTo( dragStart.x, dragStart.y );
g.lineTo( mouseX, mouseY );
dragStart.x = mouseX;
dragStart.y = mouseY;
bmp.bitmapData.draw( tmpSp );
}
}
//ここまで-----------------------------------------------------
解決したけど、なんかアホな事をしてる気がしてすっきりしない。
完成 \/^o^\/
ゲスト原稿も頂いて無事完成。結局コピー本だけど。
完成
グレスケとか上手くコピーできるか良く分かんないけど、
とりあえずこれでクリスマスを迎えられるよ!
☆ +
. .,,::。:+
+,::o;;::・;, :
\ / : :::::::::::::/⌒ヽ:::::::::::::::::::::::::: ..<;;::・,,::;ゞ;;o;*::.
(⌒) :::/ <`O::::::::::: : :: :: : ,,;;;<;+::;;´,_ゝ`*:,,;;ゞ;;:
/ ̄ ̄| ⊂ニニニ⊃:: : :: : ::: :: :: ;;;*;;;〇;ゞ;*::;;:<;;;*;:;ゞ;;o;
| ||. | 旦 (_, ,_ ): :::::::::::::: : : ::: <;;;;〇´,_ゝ`;ゞ;*::o,ゞ ;*;;;;*:o
\__| ======== \ ::::::::::::: :: ;;;*;;;〇;ゞ;*::;;;;;*ゞ´,_ゝ`〇;;; *
| | /※※※※ゞノ ,_)::::::::::::: :: : : : : : : llllllll : : : : : :
 ̄ ̄ ~~~~~~~~~~~~~~~~ 田田田
ゲスト原稿も頂いて無事完成。結局コピー本だけど。
完成
グレスケとか上手くコピーできるか良く分かんないけど、
とりあえずこれでクリスマスを迎えられるよ!
☆ +
. .,,::。:+
+,::o;;::・;, :
\ / : :::::::::::::/⌒ヽ:::::::::::::::::::::::::: ..<;;::・,,::;ゞ;;o;*::.
(⌒) :::/ <`O::::::::::: : :: :: : ,,;;;<;+::;;´,_ゝ`*:,,;;ゞ;;:
/ ̄ ̄| ⊂ニニニ⊃:: : :: : ::: :: :: ;;;*;;;〇;ゞ;*::;;:<;;;*;:;ゞ;;o;
| ||. | 旦 (_, ,_ ): :::::::::::::: : : ::: <;;;;〇´,_ゝ`;ゞ;*::o,ゞ ;*;;;;*:o
\__| ======== \ ::::::::::::: :: ;;;*;;;〇;ゞ;*::;;;;;*ゞ´,_ゝ`〇;;; *
| | /※※※※ゞノ ,_)::::::::::::: :: : : : : : : llllllll : : : : : :
 ̄ ̄ ~~~~~~~~~~~~~~~~ 田田田
| ホーム |