Rysowanie ścieżekFlash Player 10 i nowsze wersje, Adobe AIR 1.5 i nowsze wersje W sekcji dotyczącej rysowania linii prostych i krzywych (patrz Rysowanie linii i krzywych) przedstawiono polecenia służące do rysowania pojedynczych linii (Graphics.lineTo()) lub krzywych (Graphics.curveTo()) oraz przemieszczania linii do innego punktu (Graphics.moveTo()) w celu uzyskania kształtu. W niektórych rozszerzonych elementach rysunkowego interfejsu API w języku ActionScript, takich jak metody Graphics.drawPath() i Graphics.drawTriangles(), w charakterze parametrów wykorzystywane są dotychczasowe polecenia rysowania. Można zatem w ramach jednej instrukcji wydać szereg poleceń Graphics.lineTo(), Graphics.curveTo() lub Graphics.moveTo(), które mają być wykonane przez środowisko wykonawcze Flash. Dwa spośród udoskonaleń rysunkowego interfejsu API umożliwiają skonsolidowanie dotychczasowych poleceń w ramach metod Graphics.drawPath() i Graphics.drawTriangles():
Nie trzeba już wywoływać osobnego polecenia dla każdego segmentu kształtu. Na przykład metoda Graphics.drawPath() konsoliduje metody Graphics.moveTo(), Graphics.lineTo() i Graphics.curveTo(). Osobne wywołania tych metod zostają zastąpione abstrakcyjnymi identyfikatorami liczbowymi zdefiniowanymi w klasie GraphicsPathCommand. Operacja moveTo() jest oznaczona liczbą 1, a operacja lineTo() — liczbą 2. Tablicę tych wartości zapisujemy w obiekcie Vector.<int> używanym jako parametr commands. Następnie tworzymy następną tablicę zawierającą współrzędne jako obiekt Vector.<Number> używany w charakterze parametru data. Każda wartość GraphicsPathCommand odpowiada wartościom współrzędnych zapisanym w parametrze data, w którym każde dwie kolejne liczby definiują punkt w docelowej przestrzeni współrzędnych. Uwaga: Wartości w wektorze nie są obiektami Point; wektor jest szeregiem liczb, a każda para liczb reprezentuje parę współrzędnych x/y.
Metoda Graphics.drawPath() dopasowuje poszczególne polecenia do odpowiednich danych punktów (zbioru dwóch lub czterech liczb) w celu wygenerowania ścieżki w obiekcie Graphics: package{
import flash.display.*;
public class DrawPathExample extends Sprite {
public function DrawPathExample(){
var square_commands:Vector.<int> = new Vector.<int>(5,true);
square_commands[0] = 1;//moveTo
square_commands[1] = 2;//lineTo
square_commands[2] = 2;
square_commands[3] = 2;
square_commands[4] = 2;
var square_coord:Vector.<Number> = new Vector.<Number>(10,true);
square_coord[0] = 20; //x
square_coord[1] = 10; //y
square_coord[2] = 50;
square_coord[3] = 10;
square_coord[4] = 50;
square_coord[5] = 40;
square_coord[6] = 20;
square_coord[7] = 40;
square_coord[8] = 20;
square_coord[9] = 10;
graphics.beginFill(0x442266);//set the color
graphics.drawPath(square_commands, square_coord);
}
}
}
W powyższym przykładzie poszczególne polecenia i pary współrzędnych są kojarzone indywidualnie, tak aby widoczne były ich pozycje w tablicy, jednak możliwe byłoby również przypisanie ich w jednej instrukcji. Poniższy przykład ilustruje rysowanie tej samej gwiazdy poprzez przypisanie wartości do każdej tablicy w jednej instrukcji push(): package{
import flash.display.*;
public class DrawPathExample extends Sprite {
public function DrawPathExample(){
var square_commands:Vector.<int> = new Vector.<int>();
square_commands.push(1, 2, 2, 2, 2);
var square_coord:Vector.<Number> = new Vector.<Number>();
square_coord.push(20,10, 50,10, 50,40, 20,40, 20,10);
graphics.beginFill(0x442266);
graphics.drawPath(square_commands, square_coord);
}
}
}
|
|