Actionscript Flash contest: erase tool

domenica 3 febbraio, 2008

Premetto subito: non si vince nulla! A parte l'orgoglio - caso mai - di aver risolto il problema.

QUEST - DOMANDA

Come si realizza un tool per cancellare, eliminare, ripulire, una "porzione" della grafica disegnata con le API di Actionscript 3.0?

Con Actionscript 3.0 alcuni oggetti visivi, come i MovieClip o gli Shape, espongono la proprietà graphics, un puntatore ad un altro oggetto che "serve" tutte le funzioni grafiche di disegno runtime. Ad esempio è possibile sviluppare una semplice applicazione di disegno. Questo oggetto graphics permette di disegnare qualsiasi cosa, ad esempio su un oggetto Shape, in modo semplice e rapido. Il problema è che una volta disegnato qualcosa è possibile ripulire tutto ma non una singola parte.

Disegnare una linea è facilissimo:

Actionscript:
  1. var myShape:Shape = new Shape();
  2. addChild(myShape);
  3. //
  4. myShape.graphics.lineStyle(2,0xff0000,1);
  5. myShape.graphics.moveTo(0,0);
  6. myShape.graphics.lineTo(100,100);

Disegnato qualcosa è possibile ripulire tutto con la semplice chiamata al metodo clear():

Actionscript:
  1. myShape.graphics.clear();

Ma se voglio "cancellare" solo un punto? Oppure dalle coordinate 50,50 a 100,100?

Cercando su Internet ho trovato numerosi esempi di "applicazioni di disegno" e, in effetti, nessuna supporta o propone lo strumento "cancella".

Avete qualche soluzione?

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

6 commenti a: “Actionscript Flash contest: erase tool”

  1. 05 feb, 2008 MK:

    mi sa che l'unica soluzione realizzabile è tramite le bitmap api.
    recentemente ho visto questa che potrebbe fare al caso tuo:
    http://www.williamfawcett.com/websketch/

  2. 05 feb, 2008 Giovambattista Fazioli:

    @MK: grazie per la segnalazione, anche se l'avevo già scaricato il sorgente e - udite udite - è realizzato per Actionscript 1.0 - Fantastico!!
    Comunque inviate codice, codice e codice ;)
    P.S.
    Io la soluzione l'ho trovata e MK ci è andato molto vicino... anzi... vicinissimo!!!

  3. 05 feb, 2008 Giovambattista Fazioli:

    Nota tecnica: l'esempio suggerito da MK è comunque un cosa diversa. Prima di tutto non è un vero e proprio painter bitmap ma memorizza movimenti, tipi e dimesioni dei tool, lasciando il tutto vettoriale. Infatti, l'effetto di "erase" viene semplicemente simulato (Actionscript 1.0 non aveva gli accessi alle bitmap) aggiungendo un MovieClip in top most (ogni volta che si scleglie lo strumento di erase) e disegnando in bianco!! ;) Lo sfondo, infatti, non è modificabile, altrimenti il trucco si vedrebbe...

  4. 08 feb, 2008 MK:

    Riguardo la nota tecnica: se ad esempio usiamo un mc e setmask magari attivando il bitmapcaching (così magari otteniamo degli effetti sfumati o incrementali dello strumento) non dovremmo ottenere lo stesso effetto indipendentemente dal background?

    ma il blog non ha una funzione di trackback sulla mail?

  5. 08 feb, 2008 Giovambattista Fazioli:

    @MK: perchè non provi a farlo in Flash? Così lo pubblichiamo?
    Per quanto rigurda il trackback, questo Blog usa Wordpress 2.0.6... Comunque guarda il riquadro sopra, prima della lista dei commenti - sotto il rating con le stelline ;)

  6. 10 feb, 2008 undolog » Blog Archive » Create un’applicazione Paint in Flash CS3:

    [...] Create un’applicazione Paint in Flash CS3 Tags: ActionScript 3.0, Bitmap, BitmapData, draw(), erase, fillRect(), Flash CS3, Grafica & Design, Internet, Shape, Sprite, Sviluppo, TutorialsCome esposto in Actionscript Flash contest: erase tool non è possibile "cancellare" una particolare zona di uno Sprite, MovieClip o Shape su cui sono state tracciate linee o rettangoli tramite il puntatore graphics. Esiste, infatti, il solo metodo clear() che, tuttavia, ha effetto sull'intera area del nostro oggetto. La soluzione al problema risiede nella possibilità di usare gli oggetti Bitmap e BitmapData. Come vedremo possiamo accedere direttamente ai dati Bitmap e manipolarli in modo da "cancellare" i tratti con un vero e proprio strumento "cancellino". [...]

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL