RitbanorFlash Player 10 och senare, Adobe AIR 1.5 och senare I avsnittet om att rita linjer och kurvor (se Rita linjer och kurvor) introduceras kommandon för att rita en enskild linje (Graphics.lineTo()) eller kurva (Graphics.curveTo()) och sedan flytta linjen till en annan punkt (Graphics.moveTo()) för att skapa en form. Vissa av förbättringarna i Drawing API i ActionScript, till exempel Graphics.drawPath() och Graphics.drawTriangles(), använder befintliga ritkommandon som parametrar. På det sättet kan du skapa en serie av Graphics.lineTo()-, Graphics.curveTo()- eller Graphics.moveTo()-kommandon för Flash-körningen och köra dem i en enda sats. Två av förbättringarna i rit-API:t gör att Graphics.drawPath() och Graphics.drawTriangles() kan förena befintliga kommandon:
Du behöver inte längre olika kommandon för varje segment i en form. Metoden Graphics.drawPath() konsoliderar till exempel Graphics.moveTo(), Graphics.lineTo() och Graphics.curveTo() till en enda metod. I stället för att varje metod anropas separat, avskiljs de till numeriska identifierare som definieras i klassen GraphicsPathCommand. En moveTo()-åtgärd betecknas med 1, medan en lineTo()-åtgärd är 2. Lagra en array med dessa värden i en Vector.<int>-objekt som kan användas i parametern commands. Skapa sedan en annan array som innehåller koordinater i en Vector.<Number>-objekt för parametern data. Varje GraphicsPathCommand-värde motsvarar de koordinatvärden som lagras i dataparametern där två siffror i följd definierar en plats i målkoordinatrymden. Obs! Värdena i vektorn är inte Point-objekt. Vektorn är en serie siffror där varje grupp med två siffror representerar ett par med x/y-koordinater.
Metoden Graphics.drawPath() matchar varje kommando mot respektive punktvärde (en mängd med två eller flera siffror) för att skapa en bana i Graphics-objektet: 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); } } } I exemplet ovan, tilldelas varje kommando och koordinatpar individuellt för att visa deras position i arrayen, men de kan tilldelas med ett enkelt uttryck. I exemplet nedan ritas samma stjärna genom att värden tilldelas för varje array i ett enkelt push()-uttryck: 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); } } } |
|