Slikarstvo Flash CS3: stvarnom vremenu izbrisati alat
Ponedjeljak 11 Veljača, 2008 Polazeći kodove koje u Napravite Boja u Flash CS3 i provedbi male promjene, što može značajno poboljšati alat za "brisanje". Dodavanje Oblik nije vidljiv, možete ga koristiti kao "plan" da pokrenete draw() spajanju mode "izbrisati". Kao što je prikazano u donjem primjeru, budući da je dizajniran nešto, držite tipku Ctrl i djelovanje "otkaz" je sada u realnom vremenu.
Kodeks je kako slijedi - izvor:
- . MouseEvent ; uvoz flash. događaja. MouseEvent;
- . BitmapData ; uvoz flash. zaslonu. BitmapData;
- . Bitmap ; uvoz flash. zaslonu. bitmap;
- . GradientType ; uvoz flash. zaslonu. GradientType;
- / /
- . Matrix ; uvoz flash. Geom. Matica;
- / /
- = false ; var md: Boolean = false;
- / /
- Sprite ( ) ; var event_spr: Sprite = novi Sprite ();
- ; addChild (event_spr);
- / /
- = event_spr. stage . stageWidth ; var area_width: Number = event_spr. pozornici. stageWidth;
- = event_spr. stage . stageHeight - 32 ; var area_height: Number = event_spr. pozornici. stageHeight - 32;
- / /
- = GradientType. LINEAR ; var fillType: String = GradientType. LINEARNI;
- = [ 0xFF0000, 0x00FF00, 0x0000ff ] ; var boje: Array = [0xFF0000, 0x00FF00, 0x0000ff];
- = [ 1 , 1 , 1 ] ; var alphas: Array = [1, 1, 1];
- = [ 0 , 128 , 255 ] ; var Pokazivači: Array = [0, 128, 255];
- = SpreadMethod. PAD ; var spreadMethod: String = SpreadMethod. PAD;
- Matrix ( ) ; var matrica: Matrica = novih matrica ();
- area_width, area_height, 1 , 0 , 0 ) ; matrica. createGradientBox (area_width, area_height, 1, 0, 0);
- / /
- event_spr. graphics ) { s (event_spr. grafika) (
- fillType,colors,alphas,ratios,matrix,spreadMethod ) ; beginGradientFill (fillType, boje, alphas, Pokazivači, matrica, spreadMethod);
- , 0 ,area_width, area_height ) ; drawRect (0, 0, area_width, area_height);
- ; endFill ();
- )
- / / Boja događaj
- MouseEvent. MOUSE_DOWN , _onMouseDown ) ; event_spr. addEventListener (MouseEvent. MOUSE_DOWN, _onMouseDown);
- MouseEvent. MOUSE_MOVE , _onMouseMove ) ; event_spr. addEventListener (MouseEvent. MOUSE_MOVE, _onMouseMove);
- MouseEvent. MOUSE_UP , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_UP, _onMouseUp);
- MouseEvent. MOUSE_OUT , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_OUT, _onMouseUp);
- / /
- BitmapData ( event_spr. width ,event_spr. height , true , 0 ) ; var bmpd: BitmapData = novi BitmapData (event_spr. širina, event_spr. vis, istina, 0);
- Bitmap ( bmpd ) ; var bmp: = novi bitmapa bitmapa (bmpd);
- ; addChild (bmp);
- / /
- / / Privremeno oblik
- Shape ( ) ; var draw_shape: Oblik = novi oblik ();
- ; addChild (draw_shape);
- / /
- / / Oblik, nije vidljiva, koristi za "ukidanje"
- Shape ( ) ; var erase_shape: Oblik = novi oblik ();
- / /
- e :MouseEvent ) : void { _onMouseDown funkciju (e: MouseEvent): void (
- ) ; 'debug' ( "_onMouseDown");
- ( 10 , 0xffffff, 1 ) ; draw_shape. grafika. LineStyle (10, 0xffffff, 1);
- ( 20 , 0xffffff, 1 ) ; erase_shape. grafika. LineStyle (20, 0xffffff, 1);
- ( e . localX , e . localY ) ; draw_shape. grafika. moveTo (E. localX, i. localY);
- ( e . localX , e . localY ) ; erase_shape. grafika. moveTo (E. localX, i. localY);
- md = true;
- )
- / /
- e :MouseEvent ) : void { _onMouseUp funkciju (e: MouseEvent): void (
- md = false;
- ( draw_shape ) ; bmp. BitmapData. crtanje (draw_shape);
- ( ) ; draw_shape. grafika. jasan ();
- ( ) ; erase_shape. grafika. jasan ();
- )
- / /
- e :MouseEvent ) : void { _onMouseMove funkciju (e: MouseEvent): void (
- ) ; 'debug' ( "_onMouseMove");
- md && ! e . ctrlKey ) { if (MD & &! a. ctrlKey) (
- ( e . localX , e . localY ) ; draw_shape. grafika. lineTo (E. localX, i. localY);
- ( md && e . ctrlKey ) { ) Jer ako je (E & & md. CtrlKey) (
- ( e . localX , e . localY ) ; erase_shape. grafika. lineTo (E. localX, i. localY);
- ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. crtanje (erase_shape, null, null, "izbrisati");
- )
- )
- / /
- v: String ) : void { 'debug' funkcija (v: String): void (
- = new Date ( ) ; var d: Date = novi Datum ();
- d. getMinutes ( ) + ":" +d. getSeconds ( ) + ":" +d. getMilliseconds ( ) + ": " +v ) ; trag (D. getMinutes () + ":" + d. getSeconds () + ":" + d. getMilliseconds () + ":" + v);
- )
Mi smo dodali novi oblik, erase_shape nije vidljiva (nije provedena bilo koji addChild()
- ...
- / / Oblik, nije vidljiva, koristi za "ukidanje"
- Shape ( ) ; var erase_shape: Oblik = novi oblik ();
Na primjer kod pokušaja da se uvodi izvući je ključ za kontrolu i kada pritiska, je upravo pitanje Oblik erase_shape i kopirati na bitmapa:
- ....
- . lineTo ( e . localX , e . localY ) ; erase_shape. grafika. lineTo (E. localX, i. localY);
- ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. crtanje (erase_shape, null, null, "izbrisati");




















