TekenpadenFlash Player 10 of hoger, Adobe AIR 1.5 of hoger In de sectie over het tekenen van lijnen en curven (zie Lijnen en curven tekenen) zijn de opdrachten geïntroduceerd voor het tekenen van één lijn (Graphics.lineTo()) of curve (Graphics.curveTo()) en het verplaatsen van de lijn naar een ander punt (Graphics.moveTo()) om een vorm te creëren. Sommige verbeteringen in de teken-API van ActionScript, zoals Graphics.drawPath() en Graphics.drawTriangles(), gebruiken de bestaande tekenopdrachten als parameters. Op die manier kunt u een reeks opdrachten Graphics.lineTo(), Graphics.curveTo() of Graphics.moveTo() opgeven die de Flash-runtime in één instructie kan uitvoeren. Dankzij twee van de API-uitbreidingen voor tekenen kunnen Graphics.drawPath() en Graphics.drawTriangles() bestaande opdrachten verenigen:
U hebt dus niet meer voor elk segment van een vorm een afzonderlijke opdracht nodig. Zo combineert de methode Graphics.drawPath() bijvoorbeeld de opdrachten Graphics.moveTo(), Graphics.lineTo() en Graphics.curveTo() in één methode. U hoeft niet elke methode afzonderlijk op te roepen omdat ze worden ontleed in numerieke id's die in de klasse GraphicsPathCommand zijn gedefinieerd. Een moveTo()-bewerking wordt aangeduid met een 1 en een lineTo()-bewerking is een 2. Sla een reeks van deze waarden op in een vector.<int>-object voor gebruik in de parameter commands. Maak vervolgens een andere array met coördinaten in een vector.<getal>-object voor de parameter data. Elke GraphicsPathCommand-waarde komt overeen met de coördinaatwaarden die in de gegevensparameter zijn opgeslagen, waarbij twee opeenvolgende cijfers een locatie aanduiden in de coördinaatruimte van het doel. Opmerking: De waarden in de vector zijn geen Point-objecten. De vector is een reeks getallen waarbij telkens twee getallen een x/y-coördinaat vormen.
De methode Graphics.drawPath() vergelijkt elke opdracht met de respectieve puntwaarden (een verzameling van twee of vier getallen) om een pad te genereren in het Graphics-object: 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); } } } In het bovenstaande voorbeeld wordt elke opdracht en coördinatenpaar afzonderlijk toegewezen, om hun positie in de array aan te geven, maar ze kunnen in één instructie worden toegewezen. In het volgende voorbeeld wordt dezelfde ster getekend door de waarden voor elke array in één push()-instructie toe te wijzen: 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); } } } |
![]() |