Uso delle classi di dati graficheFlash Player 10 e versioni successive, Adobe AIR 1.5 e versioni successive L'API di disegno migliorata introduce una raccolta di classi nel pacchetto flash.display del tipo IGraphicsData (un'interfaccia implementata da ciascuna delle classi). Le classi che implementano l'interfaccia IGraphicsData servono come contenitore di dati per i metodi dell'API di disegno. Le classi seguenti implementano l'interfaccia IGraphicsData:
Con queste classi, potete memorizzare disegni completi in un array di oggetti vettoriali del tipo IGraphicsData (Vector.<IGraphicsData>) che potete riutilizzare come origine dati per altre istanze della forma o per memorizzare informazioni sul disegno per l'utilizzo futuro. Notate che per ogni stile di riempimento sono disponibili più classi di riempimento, ma una sola classe stroke. ActionScript dispone di una sola classe IGraphicsData di tratto poiché la classe stroke utilizza le classi di riempimento per definire il suo stile. Pertanto, ogni tratto è in realtà la classe stroke e una classe fill. In caso contrario, l'API per queste classi di dati grafiche riflettono i metodi che rappresentano nella classe flash.display.Graphics:
Inoltre, la classe GraphicsPath dispone di propri metodi di utilità GraphicsPath.moveTo(), GraphicsPath.lineTo(), GraphicsPath.curveTo(), GraphicsPath.wideLineTo() e GraphicsPath.wideMoveTo() per definire in modo semplice questi comandi per un'istanza GraphicsPath. Questi metodi di utilità semplificano la definizione e l'aggiornamento dei comandi e dei valori di dati. Dopo aver ottenuto una raccolta di istanze IGraphicsData, utilizzate il metodo Graphics.drawGraphicsData() per eseguire il rendering dei grafici. Il metodo Graphics.drawGraphicsData() esegue un vettore di istanze IGraphicsData tramite l'API di disegno, in ordine sequenziale: // stroke object var stroke:GraphicsStroke = new GraphicsStroke(3); stroke.joints = JointStyle.MITER; stroke.fill = new GraphicsSolidFill(0x102020);// solid stroke // fill object var fill:GraphicsGradientFill = new GraphicsGradientFill(); fill.colors = [0x0000FF, 0xEEFFEE]; fill.matrix = new Matrix(); fill.matrix.createGradientBox(70,70, Math.PI/2); // path object var path:GraphicsPath = new GraphicsPath(new Vector.<int>(), new Vector.<Number>()); path.commands.push(1,2,2); path.data.push(125,0, 50,100, 175,0); // combine objects for complete drawing var drawing:Vector.<IGraphicsData> = new Vector.<IGraphicsData>(); drawing.push(stroke, fill, path); // draw the drawing graphics.drawGraphicsData(drawing); La modifica di un unico valore nel tracciato usato dal disegno nell'esempio consente di ridisegnare la forma più volte per un'immagine più complessa: // draw the drawing multiple times // change one value to modify each variation graphics.drawGraphicsData(drawing); path.data[2] += 200; graphics.drawGraphicsData(drawing); path.data[2] -= 150; graphics.drawGraphicsData(drawing); path.data[2] += 100; graphics.drawGraphicsData(drawing); path.data[2] -= 50;graphicsS.drawGraphicsData(drawing); Gli stili di riempimento e di tratto, sebbene definibili tramite gli oggetti IGraphicsData, non sono un requisito. In altre parole, potete usare i metodi della classe Graphics per impostare gli stili e gli oggetti IGraphicsData per disegnare una raccolta salvata di tracciati, o viceversa. Nota: per cancellare un disegno precedente prima di iniziarne uno nuovo, usate il metodo Graphics.clear(), a meno che il disegno non venga aggiunto a quello originale, come illustrato nell'esempio precedente. Mentre modificate una singola parte di un tracciato o di una raccolta di oggetti IGraphicsData, ridisegnate l'intero disegno per vedere i cambiamenti.
Se si utilizzano classi di dati grafiche, il rendering del riempimento viene eseguito ogni volta che si disegnano tre o più punti, poiché la forma è intrinsecamente chiusa in quel punto. A differenza del riempimento, il tratto non si chiude e questo comportamento è diverso da quello che si ottiene quando si utilizzano più comandi Graphics.lineTo() o Graphics.moveTo(). |
|