Ζωγραφική Flash CS3: πραγματικό χρόνο διαγράψει εργαλείο
Δευτέρα 11 Φεβρουαρίου, 2008 Ξεκινώντας τους κωδικούς που παρέχονται στο Δημιουργία βαφή σε Flash CS3, και την εφαρμογή μικρές αλλαγές, μπορεί να βελτιώσει σημαντικά το εργαλείο για να "διαγράψει". Προσθέτοντας ένα σχήμα δεν είναι ορατή, μπορείτε να το χρησιμοποιήσετε σαν ένα "σχέδιο" για να εκτελέσετε draw() κλήρωση draw() συγκέντρωση mode "διαγράψει". Όπως φαίνεται στο παρακάτω παράδειγμα, που έχει σχεδιαστεί κάτι, κρατήστε πατημένο το πλήκτρο Ctrl και το αποτέλεσμα της «ακύρωσης» είναι τώρα σε πραγματικό χρόνο.
Ο κώδικας έχει ως εξής - πηγή:
- . MouseEvent ; εισαγωγή flash. γεγονότα. MouseEvent?
- . BitmapData ; εισαγωγή flash. οθόνης. BitmapData?
- . Bitmap ; εισαγωγή flash. οθόνης. Bitmap?
- . GradientType ; εισαγωγή flash. οθόνης. GradientType?
- / /
- . Matrix ; εισαγωγή flash. Geom. Μάτριξ?
- / /
- = false ; var MD: Boolean = false?
- / /
- Sprite ( ) ; var event_spr: Sprite = new Sprite ()?
- ; addChild (event_spr)?
- / /
- = event_spr. stage . stageWidth ; var area_width: Αριθμός = event_spr. φάση. stageWidth?
- = event_spr. stage . stageHeight - 32 ; var area_height: Αριθμός = event_spr. φάση. stageHeight - 32?
- / /
- = GradientType. LINEAR ; var fillType: String = GradientType. LINEAR?
- = [ 0xFF0000, 0x00FF00, 0x0000ff ] ; var χρώματα: Array = [0xFF0000, 0x00FF00, 0x0000ff]?
- = [ 1 , 1 , 1 ] ; var άλφα: Array = [1, 1, 1]?
- = [ 0 , 128 , 255 ] ; var αναλογίες: Array = [0, 128, 255]?
- = SpreadMethod. PAD ; var spreadMethod: String = SpreadMethod. PAD?
- Matrix ( ) ; var μήτρα: Matrix = new Matrix ()?
- area_width, area_height, 1 , 0 , 0 ) ; μήτρα. createGradientBox (area_width, area_height, 1, 0, 0)?
- / /
- event_spr. graphics ) { με (event_spr. γραφικά) (
- fillType,colors,alphas,ratios,matrix,spreadMethod ) ; beginGradientFill (fillType, χρώματα, άλφα, αναλογίες, μήτρα, spreadMethod)?
- , 0 ,area_width, area_height ) ; drawRect (0, 0, area_width, area_height)?
- ; endFill ()?
- )
- / / Η βαφή περίπτωση
- 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 = νέα BitmapData (event_spr. πλάτος, event_spr. ύψος, αλήθεια, 0)?
- Bitmap ( bmpd ) ; var bmp: = new Bitmap Bitmap (bmpd)?
- ; addChild (BMP)?
- / /
- / / Προσωρινή σχήμα
- Shape ( ) ; var draw_shape: Shape = νέο σχήμα ()?
- ; addChild (draw_shape)?
- / /
- / / Το σχήμα, δεν είναι ορατή, που χρησιμοποιούνται για την "κατάργηση"
- Shape ( ) ; var erase_shape: Shape = νέο σχήμα ()?
- / /
- e :MouseEvent ) : void { _onMouseDown λειτουργία (e: MouseEvent): άκυρη (
- ) ; debug ( "_onMouseDown")?
- ( 10 , 0xffffff, 1 ) ; draw_shape. γραφικά. LineStyle (10, 0xffffff, 1)?
- ( 20 , 0xffffff, 1 ) ; erase_shape. γραφικά. LineStyle (20, 0xffffff, 1)?
- ( e . localX , e . localY ) ; draw_shape. γραφικά. moveTo (Ε. localX, και. localY)?
- ( e . localX , e . localY ) ; erase_shape. γραφικά. moveTo (Ε. localX, και. localY)?
- md = αλήθεια?
- )
- / /
- e :MouseEvent ) : void { _onMouseUp λειτουργία (e: MouseEvent): άκυρη (
- md = false?
- ( draw_shape ) ; bmp. BitmapData. Ισοπαλία (draw_shape)?
- ( ) ; draw_shape. γραφικά. σαφές ()?
- ( ) ; erase_shape. γραφικά. σαφές ()?
- )
- / /
- e :MouseEvent ) : void { _onMouseMove λειτουργία (e: MouseEvent): άκυρη (
- ) ; debug ( "_onMouseMove")?
- md && ! e . ctrlKey ) { εάν (Υ.Α. & &! και. ctrlKey) (
- ( e . localX , e . localY ) ; draw_shape. γραφικά. lineTo (Ε. localX, και. localY)?
- ( md && e . ctrlKey ) { ) Else if (e & & MD. CtrlKey) (
- ( e . localX , e . localY ) ; erase_shape. γραφικά. lineTo (Ε. localX, και. localY)?
- ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. Ισοπαλία (erase_shape, null, null, "διαγράψει")?
- )
- )
- / /
- v: String ) : void { debug λειτουργίας (V: String): άκυρη (
- = new Date ( ) ; var d: Ημερομηνία = new Date ()?
- d. getMinutes ( ) + ":" +d. getSeconds ( ) + ":" +d. getMilliseconds ( ) + ": " +v ) ; ίχνος (getMinutes δ. () + ":" + δ. getSeconds () + ":" + δ. getMilliseconds () + ":" + v)?
- )
Έχουμε προσθέσει ένα νέο σχήμα, το erase_shape δεν φαίνεται (δεν πραγματοποίησε καμία addChild()
- ...
- / / Το σχήμα, δεν είναι ορατή, που χρησιμοποιούνται για την "κατάργηση"
- Shape ( ) ; var erase_shape: Shape = νέο σχήμα ()?
Το κομμάτι του κώδικα που επιχειρεί να αντλήσει εισήχθη κλειδί για τον έλεγχο και, όταν πιέζεται, είναι ακριβώς το ζήτημα Shape erase_shape και αντιγράφεται σε Bitmap:
- ....
- . lineTo ( e . localX , e . localY ) ; erase_shape. γραφικά. lineTo (Ε. localX, και. localY)?
- ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. Ισοπαλία (erase_shape, null, null, "διαγράψει")?






















