Måleri Flash CS3: realtid radera verktyg
Måndag 11 februari, 2008 Start av koder som anges i Skapa en Paint i Flash CS3, och genomföra små förändringar kan vi betydligt bättre verktyg för att "radera". Lägga till en form som inte syns kan du använda det som en "plan" för att köra draw() fusionen läge "radera". Som visas i exemplet nedan, som har utformats något, håll nere Ctrl-tangenten och effekten av "inställda" är nu i realtid.
Koden är följande - källa:
- . MouseEvent ; import flash. evenemang. MouseEvent;
- . BitmapData ; import flash. displayen. BitmapData;
- . Bitmap ; import flash. displayen. Bitmap;
- . GradientType ; import flash. displayen. GradientType;
- / /
- . Matrix ; import flash. Geom. Matrix;
- / /
- = false ; var md: Boolean = false;
- / /
- Sprite ( ) ; var event_spr: Sprite = nya Sprite ();
- ; addChild (event_spr);
- / /
- = event_spr. stage . stageWidth ; var area_width: Antal = event_spr. skede. stageWidth;
- = event_spr. stage . stageHeight - 32 ; var area_height: Antal = event_spr. skede. stageHeight - 32;
- / /
- = GradientType. LINEAR ; var fillType: String = GradientType. linear;
- = [ 0xFF0000, 0x00FF00, 0x0000ff ] ; var färger: Array = [0xFF0000, 0x00FF00, 0x0000ff];
- = [ 1 , 1 , 1 ] ; var Alpha: Array = [1, 1, 1];
- = [ 0 , 128 , 255 ] ; var nyckeltal: Array = [0, 128, 255];
- = SpreadMethod. PAD ; var spreadMethod: String = SpreadMethod. PAD;
- Matrix ( ) ; var matrix: Matrix = new Matrix ();
- area_width, area_height, 1 , 0 , 0 ) ; matris. createGradientBox (area_width, area_height, 1, 0, 0);
- / /
- event_spr. graphics ) { med (event_spr. grafik) (
- fillType,colors,alphas,ratios,matrix,spreadMethod ) ; beginGradientFill (fillType, färger, Alpha, nyckeltal, matris, spreadMethod);
- , 0 ,area_width, area_height ) ; drawRect (0, 0, area_width, area_height);
- ; endFill ();
- )
- / / Paint händelse
- 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 = nya BitmapData (event_spr. bredd, event_spr. höjd, sant, 0);
- Bitmap ( bmpd ) ; var bmp: = new Bitmap Bitmap (bmpd);
- ; addChild (bmp);
- / /
- / / Tillfälliga form
- Shape ( ) ; var draw_shape: Shape = new Form ();
- ; addChild (draw_shape);
- / /
- / / Shape, inte, används för att "avskaffa"
- Shape ( ) ; var erase_shape: Shape = new Form ();
- / /
- e :MouseEvent ) : void { _onMouseDown funktion (e: MouseEvent): void (
- ) ; debug ( "_onMouseDown");
- ( 10 , 0xffffff, 1 ) ; draw_shape. grafik. LineStyle (10, 0xffffff, 1);
- ( 20 , 0xffffff, 1 ) ; erase_shape. grafik. LineStyle (20, 0xffffff, 1);
- ( e . localX , e . localY ) ; draw_shape. grafik. Flytta (e. localX, och. localY);
- ( e . localX , e . localY ) ; erase_shape. grafik. Flytta (e. localX, och. localY);
- Md = true;
- )
- / /
- e :MouseEvent ) : void { _onMouseUp funktion (e: MouseEvent): void (
- Md = false;
- ( draw_shape ) ; bmp. BitmapData. draw (draw_shape);
- ( ) ; draw_shape. grafik. tydlig ();
- ( ) ; erase_shape. grafik. tydlig ();
- )
- / /
- e :MouseEvent ) : void { _onMouseMove funktion (e: MouseEvent): void (
- ) ; debug ( "_onMouseMove");
- md && ! e . ctrlKey ) { om (MD & &! och. ctrlKey) (
- ( e . localX , e . localY ) ; draw_shape. grafik. lineTo (e. localX, och. localY);
- ( md && e . ctrlKey ) { ) Else om (E & & md. CtrlKey) (
- ( e . localX , e . localY ) ; erase_shape. grafik. lineTo (e. localX, och. localY);
- ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. draw (erase_shape, null, null, "radera");
- )
- )
- / /
- v: String ) : void { debug-funktionen (v: String): void (
- = new Date ( ) ; var d: Datum = new Date ();
- d. getMinutes ( ) + ":" +d. getSeconds ( ) + ":" +d. getMilliseconds ( ) + ": " +v ) ; spåra (d. getMinutes () + ":" + D. getSeconds () + ":" + D. getMilliseconds () + ":" + v);
- )
Vi har lagt till en ny form, erase_shape inte syns (det var inte utfört någon addChild()
- ...
- / / Shape, inte, används för att "avskaffa"
- Shape ( ) ; var erase_shape: Shape = new Form ();
Den del av koden som försöker dra infördes för Ctrl-tangenten och, när knappen trycks in, är just frågan Shape erase_shape och kopieras på Bitmap:
- ....
- . lineTo ( e . localX , e . localY ) ; erase_shape. grafik. lineTo (e. localX, och. localY);
- ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. draw (erase_shape, null, null, "radera");




















