Создание контуровFlash Player 10 и более поздних версий, Adobe AIR 1.5 и более поздних версий В разделе о рисовании линий и кривых (см. Создание линий и кривых) представлены команды для рисования одной линии (Graphics.lineTo()) или кривой (Graphics.curveTo()), а затем для перемещения линии в другую точку (Graphics.moveTo()) с целью построения фигуры. Некоторые расширенные функции API-интерфейса рисования в ActionScript, такие как Graphics.drawPath() и Graphics.drawTriangles(), используют в качестве параметров существующие команды рисования. Поэтому можно указать последовательность команд Graphics.lineTo(), Graphics.curveTo() или Graphics.moveTo() в среде выполнения Flash для выполнения одной инструкции. Две новые возможности API для рисования позволяют методам Graphics.drawPath() и Graphics.drawTriangles() объединить существующие команды:
Теперь не нужно использовать отдельные команды для каждого сегмента фигуры. Например, метод Graphics.drawPath() объединяет в себе методы Graphics.moveTo(), Graphics.lineTo() и Graphics.curveTo(). Эти методы не вызываются по отдельности, а выделяются отдельно в числовые идентификаторы, определяемых классом GraphicsPathCommand. Операция moveTo() обозначается как 1, а операция lineTo() — как 2. Сохраните массив этих значений в объекте Vector<int> для использования в параметре commands. Затем создайте другой массив с координатами в объекте Vector.<Number> для использования в параметре data. Каждое значение GraphicsPathCommand соответствует значениям координат, сохраненным в параметре data, где два последовательных числа определяют местоположение в целевом координатном пространстве. Примечание. Значения в объекте Vector не являются объектами Point. Вектор — это последовательность чисел, где каждая группа из двух чисел представляет пару координат х и у.
Метод Graphics.drawPath() сопоставляет каждую команду с соответствующими значениями точек (набор из двух или четырех чисел) для создания контура в объекте 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);
}
}
}
В вышеприведенном примере каждая команда и пара координат назначены индивидуально для отображения их положения в массиве, но они могут быть назначены и в одной инструкции. В следующем примере будет нарисована та же звезда путем назначения значений для каждого массива в одной инструкции 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);
}
}
}
|
|