Ζωγραφική Flash CS3: πραγματικό χρόνο διαγράψει εργαλείο

Δευτέρα 11 Φεβρουαρίου, 2008

Ξεκινώντας τους κωδικούς που παρέχονται στο Δημιουργία βαφή σε Flash CS3, και την εφαρμογή μικρές αλλαγές, μπορεί να βελτιώσει σημαντικά το εργαλείο για να "διαγράψει". Προσθέτοντας ένα σχήμα δεν είναι ορατή, μπορείτε να το χρησιμοποιήσετε σαν ένα "σχέδιο" για να εκτελέσετε draw() κλήρωση draw() συγκέντρωση mode "διαγράψει". Όπως φαίνεται στο παρακάτω παράδειγμα, που έχει σχεδιαστεί κάτι, κρατήστε πατημένο το πλήκτρο Ctrl και το αποτέλεσμα της «ακύρωσης» είναι τώρα σε πραγματικό χρόνο.

Loading Flash player ...

Ο κώδικας έχει ως εξής - πηγή:

Actionscript:
  1. . MouseEvent ; εισαγωγή flash. γεγονότα. MouseEvent?
  2. . BitmapData ; εισαγωγή flash. οθόνης. BitmapData?
  3. . Bitmap ; εισαγωγή flash. οθόνης. Bitmap?
  4. . GradientType ; εισαγωγή flash. οθόνης. GradientType?
  5. / /
  6. . Matrix ; εισαγωγή flash. Geom. Μάτριξ?
  7. / /
  8. = false ; var MD: Boolean = false?
  9. / /
  10. Sprite ( ) ; var event_spr: Sprite = new Sprite ()?
  11. ; addChild (event_spr)?
  12. / /
  13. = event_spr. stage . stageWidth ; var area_width: Αριθμός = event_spr. φάση. stageWidth?
  14. = event_spr. stage . stageHeight - 32 ; var area_height: Αριθμός = event_spr. φάση. stageHeight - 32?
  15. / /
  16. = GradientType. LINEAR ; var fillType: String = GradientType. LINEAR?
  17. = [ 0xFF0000, 0x00FF00, 0x0000ff ] ; var χρώματα: Array = [0xFF0000, 0x00FF00, 0x0000ff]?
  18. = [ 1 , 1 , 1 ] ; var άλφα: Array = [1, 1, 1]?
  19. = [ 0 , 128 , 255 ] ; var αναλογίες: Array = [0, 128, 255]?
  20. = SpreadMethod. PAD ; var spreadMethod: String = SpreadMethod. PAD?
  21. Matrix ( ) ; var μήτρα: Matrix = new Matrix ()?
  22. area_width, area_height, 1 , 0 , 0 ) ; μήτρα. createGradientBox (area_width, area_height, 1, 0, 0)?
  23. / /
  24. event_spr. graphics ) { με (event_spr. γραφικά) (
  25. fillType,colors,alphas,ratios,matrix,spreadMethod ) ; beginGradientFill (fillType, χρώματα, άλφα, αναλογίες, μήτρα, spreadMethod)?
  26. , 0 ,area_width, area_height ) ; drawRect (0, 0, area_width, area_height)?
  27. ; endFill ()?
  28. )
  29. / / Η βαφή περίπτωση
  30. MouseEvent. MOUSE_DOWN , _onMouseDown ) ; event_spr. addEventListener (MouseEvent. MOUSE_DOWN, _onMouseDown)?
  31. MouseEvent. MOUSE_MOVE , _onMouseMove ) ; event_spr. addEventListener (MouseEvent. MOUSE_MOVE, _onMouseMove)?
  32. MouseEvent. MOUSE_UP , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_UP, _onMouseUp)?
  33. MouseEvent. MOUSE_OUT , _onMouseUp ) ; event_spr. addEventListener (MouseEvent. MOUSE_OUT, _onMouseUp)?
  34. / /
  35. BitmapData ( event_spr. width ,event_spr. height , true , 0 ) ; var bmpd: BitmapData = νέα BitmapData (event_spr. πλάτος, event_spr. ύψος, αλήθεια, 0)?
  36. Bitmap ( bmpd ) ; var bmp: = new Bitmap Bitmap (bmpd)?
  37. ; addChild (BMP)?
  38. / /
  39. / / Προσωρινή σχήμα
  40. Shape ( ) ; var draw_shape: Shape = νέο σχήμα ()?
  41. ; addChild (draw_shape)?
  42. / /
  43. / / Το σχήμα, δεν είναι ορατή, που χρησιμοποιούνται για την "κατάργηση"
  44. Shape ( ) ; var erase_shape: Shape = νέο σχήμα ()?
  45. / /
  46. e :MouseEvent ) : void { _onMouseDown λειτουργία (e: MouseEvent): άκυρη (
  47. ) ; debug ( "_onMouseDown")?
  48. ( 10 , 0xffffff, 1 ) ; draw_shape. γραφικά. LineStyle (10, 0xffffff, 1)?
  49. ( 20 , 0xffffff, 1 ) ; erase_shape. γραφικά. LineStyle (20, 0xffffff, 1)?
  50. ( e . localX , e . localY ) ; draw_shape. γραφικά. moveTo (Ε. localX, και. localY)?
  51. ( e . localX , e . localY ) ; erase_shape. γραφικά. moveTo (Ε. localX, και. localY)?
  52. md = αλήθεια?
  53. )
  54. / /
  55. e :MouseEvent ) : void { _onMouseUp λειτουργία (e: MouseEvent): άκυρη (
  56. md = false?
  57. ( draw_shape ) ; bmp. BitmapData. Ισοπαλία (draw_shape)?
  58. ( ) ; draw_shape. γραφικά. σαφές ()?
  59. ( ) ; erase_shape. γραφικά. σαφές ()?
  60. )
  61. / /
  62. e :MouseEvent ) : void { _onMouseMove λειτουργία (e: MouseEvent): άκυρη (
  63. ) ; debug ( "_onMouseMove")?
  64. md && ! e . ctrlKey ) { εάν (Υ.Α. & &! και. ctrlKey) (
  65. ( e . localX , e . localY ) ; draw_shape. γραφικά. lineTo (Ε. localX, και. localY)?
  66. ( md && e . ctrlKey ) { ) Else if (e & & MD. CtrlKey) (
  67. ( e . localX , e . localY ) ; erase_shape. γραφικά. lineTo (Ε. localX, και. localY)?
  68. ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. Ισοπαλία (erase_shape, null, null, "διαγράψει")?
  69. )
  70. )
  71. / /
  72. v: String ) : void { debug λειτουργίας (V: String): άκυρη (
  73. = new Date ( ) ; var d: Ημερομηνία = new Date ()?
  74. d. getMinutes ( ) + ":" +d. getSeconds ( ) + ":" +d. getMilliseconds ( ) + ": " +v ) ; ίχνος (getMinutes δ. () + ":" + δ. getSeconds () + ":" + δ. getMilliseconds () + ":" + v)?
  75. )

Έχουμε προσθέσει ένα νέο σχήμα, το erase_shape δεν φαίνεται (δεν πραγματοποίησε καμία addChild()

Actionscript:
  1. ...
  2. / / Το σχήμα, δεν είναι ορατή, που χρησιμοποιούνται για την "κατάργηση"
  3. Shape ( ) ; var erase_shape: Shape = νέο σχήμα ()?

Το κομμάτι του κώδικα που επιχειρεί να αντλήσει εισήχθη κλειδί για τον έλεγχο και, όταν πιέζεται, είναι ακριβώς το ζήτημα Shape erase_shape και αντιγράφεται σε Bitmap:

Actionscript:
  1. ....
  2. . lineTo ( e . localX , e . localY ) ; erase_shape. γραφικά. lineTo (Ε. localX, και. localY)?
  3. ( erase_shape, null , null , "erase" ) ; bmp. BitmapData. Ισοπαλία (erase_shape, null, null, "διαγράψει")?

Σχετικές Post

Δημιουργήστε μια βαφή σε Flash CS3

Κυριακή 10 Φεβρουαρίου, 2008

Όπως εξηγείται στο Flash Actionscript διαγωνισμού: διαγράψει το εργαλείο δεν είναι δυνατόν να "διαγράψει" μια συγκεκριμένη περιοχή Sprite ένα, ή το σχήμα MovieClip που έχουν καταρτιστεί γραμμές ή ορθογώνια σχήματα, χρησιμοποιώντας το δείκτη γραφικών. Υπάρχει, στην πραγματικότητα, η μόνη μέθοδος που clear() ωστόσο, σε ισχύ από την περιοχή μας θέμα. Η λύση του προβλήματος έγκειται στη δυνατότητα χρήσης αντικειμένων και BitmapData Bitmap. Θα δούμε πώς μπορούμε να απευθείας πρόσβασης και διαχείρισης δεδομένων Bitmap ώστε να "διαγράψει" χαρακτηριστικών, με ένα πραγματικό εργαλείο "ακυρώσει".

Θα παρουσιαστούν δύο διαφορετικές μεθόδους για την επίτευξη του στόχου της "διαγραφή". Η πρώτη "ζωγραφική» (σαφές) δεδομένα απευθείας σε BitmapData, χρησιμοποιώντας τη μέθοδο fillRect() μπορεί επίσης να χρησιμοποιηθεί setPixel() Η δεύτερη μέθοδος, το προτιμώ, χρησιμοποιεί τις μεθόδους των συγχωνεύσεων (blendMode).

Πρώτα από όλα θα δούμε τι είδους οργάνωση είναι ελάχιστα αναγκαία για την επίτευξη ενός απλού Ζωγράφος σε Flash. Το σχεδιάγραμμα που παρουσιάζονται παρακάτω ισχύει και για τις δύο προτάσεις της "διαγραφή":

σχήματος-bitmap

Θα δημιουργηθεί τρία στρώματα: το πρώτο, MovieClip ή Sprite, και εργάζεται ως φόντο το πρόγραμμα χειρισμού (MouseDown, MouseMove και MouseUp). Το δεύτερο, Bitmap, είναι το βασικό μας στρώμα, η οποία πράγματι περιέχει γραφικά που σχεδιάζονται και που θα είναι επίσης χαρακτηριστικό "ακυρώσει". Η τρίτη και τελική στρώση, το σχήμα, επιλύει δύο ζητήματα: πρώτον, η οποία σας επιτρέπει να χρησιμοποιήσετε τις λειτουργίες άμεσα διαθέσιμα από το δείκτη γραφικών (όπως lineStyle drawRect() κ.λπ. ...). Επίσης, αυξάνει τις επιδόσεις κατά τη διάρκεια της παρακολούθησης γράφημα, όπως εξηγείται αναλυτικά παρακάτω. Συνέχιση ανάγνωσης ... "

Σχετικές Post

Ζωγραφική Flash CS3: επιπτώσεις μήτρες Matrix

Παρασκευή 8 Φεβρουαρίου, 2008

Παίζοντας με τις ισχυρές και ευέλικτες αντικείμενο Matrix τις αλλαγές, μπορείς να κάνεις αλλόκοτα πράγματα. Τα μέσα αυτά χρησιμοποιούνται για να εφαρμόσουν συγκεκριμένες αλλαγές σε οπτικό αντικείμενο, όπως ένα Sprite. Μπορείτε, για παράδειγμα, την κλίμακα, εναλλάσσονται ή να στρεβλώνουν (λοξότης) η Sprite. Ενώ οι δύο πρώτες λειτουργίες (την κλίμακα και την περιστροφή) τα είδη Sprite (όχι μόνο) να διαθέσουν άμεσα από τις ιδιότητες scaleX / scaleY και rotation άμεσα λοξότητα πρέπει να απευθύνει έκκληση προς την μήτρα. Αυτό που θέλω να υπογραμμίσω εδώ είναι ότι όταν ένα αντικείμενο αλλαγή γράφημα συντονίζει όλες τις εσωτερικές της μετακινήθηκε: Συνεχίστε την ανάγνωση ... "

Σχετικές Post

10 λόγοι για να πάει στο Adobe Flash CS3

Δευτέρα 26 Νοεμβρίου 2007,

2007-11-21_170314 Για ορισμένους προγραμματιστές ώστε να γνωρίζω ότι υπάρχει μια νέα έκδοση του πακέτου ανάπτυξης του προτίμησαν να αγοράσουν την κούρσα για την αναβάθμιση. Άλλοι, δεν έχει άδικο, να διατηρήσουν μια πιο ήρεμη και "ζήτηση" να γνωρίζουν την πραγματική βελτίωση της τη νέα έκδοση πριν να αλλάζουν τις συνήθειές τους. Στην περίπτωση της Adobe Flash CS3 υπάρχουν πολλά να περιμένουν, λόγω των πολλών αλλαγών που έχουν πληγεί από την Macromedia πακέτο όταν εξαγοράστηκε από την Adobe.
Ιδού, λοιπόν, 10 το απλό, αλλά σοβαροί λόγοι, κατά την προσωπική μου άποψη, αρκεί να πείσει για την αναβάθμιση σε Adobe Flash CS3. Ι θα είναι, φυσικά, μόνο τα χαρακτηριστικά που μου κίνησε την προσοχή, αυτό δεν θα είναι ένας εξαντλητικός κατάλογος όλων των πολλές καινοτομίες που εισήγαγε το CS3 Suite, μόνο μία πτήση βοσκή για την πρόβλεψη ορισμένα χαρακτηριστικά της έκδοση CS3.

1. Εγκατάσταση

Η εγκατάσταση είναι γρήγορη και ευχάριστη, σε σύγκριση με τις προηγούμενες εκδόσεις. Θα περιλαμβάνει, μεταξύ άλλων, με όλα τα προϊόντα της Adobe (Dreamweaver CS3, Photoshop CS3 επεκταθεί, κτλ ...) που κάνει τις εργασίες εγκατάστασης / αφαίρεση και ενημέρωση μια πραγματική απόλαυση.

2. Συμβατότητα με παλαιότερες εκδόσεις

Ένα ερώτημα που συχνά υποτιμάται, αλλά πάντα να λαμβάνεται υπόψη στην ιστορία του Flash: την ικανότητά της να διαχειρίζεται τις παλαιότερες εκδόσεις του προϊόντος. Στο Flash CS3, υπάρχουν όλα τα μέσα που είναι να μεταναστεύσουν για να χειραγωγήσουν ότι οι προηγούμενες εκδόσεις των ταινιών μας. Θεωρούμε ότι η δυνατότητα αυτή σε debug (debug ξεχωριστή Actionscript 2.0 και Actionscript 3.0) που καταρτίζονται από την ταινία. Γράψτε τώρα σε Flash Actionscript 3,0 θα μπορούσε να είναι αντιπαραγωγική σε ορισμένες περιπτώσεις. Εάν στόχος σας site έχει σημαντική κίνηση θα μπορούσε να συμβεί ότι πολλοί χρήστες δεν έχουν ακόμα εγκαταστήσει την τελευταία έκδοση του Flash Player για το πρόγραμμα περιήγησης και, στη συνέχεια, δεν θα την ταινία. Ωστόσο, όπως είπα, Flash CS3 σας επιτρέπει την ανάπτυξη εφαρμογών Flash mantendedo συμβατότητα με παλαιότερες εκδόσεις και γι 'αυτό δεν βλέπουμε αυτό σε ένα μεγάλο ostocalo nell'upgrade προϊόν.

3. Γραφική διεπαφή και IDE

Panel μειώνεται στο εικονίδιοΝέα ομάδα Flash CS3 Η IDE Flash CS3 (όπως το Dreamweaver CS3) έχει ανανεωμένη την καλύτερη. Οι πίνακες (βλ. σχήμα αριστερά), συχνά άβολα σε προηγούμενες εκδόσεις έχουν πλήρως επανασχεδιαστεί και τώρα η χρήση τους είναι πολύ λιγότερο επεμβατικές. Πίνακες mode εικονίδιο Επιπλέον, η δυνατότητα να μειωθεί στο εικονίδιο πίνακες (βλ. εικόνα στα δεξιά) είναι μια πραγματική διαπίστωσε ότι η διεπαφή το καθιστά ελκυστικό και λειτουργικό. Όταν μια ομάδα είναι στο εικονίδιο καταλαμβάνει πολύ μικρότερο χώρο και με ένα απλό κλικ θα ανοίξει το πρώτο βασικό πάνελ πάντα ορατό.
Όλα τα IDE, εν ολίγοις, έχει αναθεωρηθεί συμπεριλαμβανομένης της κεντρικής περιοχής με το παράθυρο για επεξεργασία γραφικών και κώδικα. Εκεί θα αναφέρει τυχόν αλλαγές που αλλιώς θα τα χαλάσουμε την έκπληξη ...

Νέα IDE Flash CS3

Συνέχιση ανάγνωσης ... "

Σχετικές Post