그래픽 데이터 클래스 사용

Flash Player 10 이상, Adobe AIR 1.5 이상

향상된 드로잉 API에는 IGraphicsData 인터페이스를 구현하는 flash.display 패키지의 클래스 집합이 포함되어 있습니다. 이 클래스 집합은 드로잉 API의 드로잉 메서드를 나타내는 값 객체(데이터 컨테이너) 역할을 합니다.

이 클래스를 사용하면 전체 드로잉을 IGraphicsData 유형의 Vector 객체(Vector.<IGraphicsData>)에 저장할 수 있습니다. 그런 다음 그래픽 데이터를 다른 모양 인스턴스의 데이터 소스로 재사용하거나 나중에 사용하도록 드로잉 정보를 저장할 수 있습니다.

각 채우기 스타일에 사용할 수 있는 채우기 클래스는 여러 개가 있지만 획 클래스는 하나만 있습니다. 획 클래스는 채우기 클래스를 사용하여 스타일을 정의하므로 ActionScript에는 획에 대한 IGraphicsData 클래스는 하나만 있습니다. 따라서 모든 획은 실제로 채우기 클래스 및 획 클래스 조합에 따라 정의됩니다. 그렇지 않은 경우 이러한 그래픽 데이터 클래스의 API는 flash.display.Graphics 클래스에서 해당 API가 나타내는 메서드를 미러링합니다.

Graphics 메서드

해당 클래스

beginBitmapFill()

GraphicsBitmapFill

beginFill()

GraphicsSolidFill

beginGradientFill()

GraphicsGradientFill

beginShaderFill()

GraphicsShaderFill

lineBitmapStyle()

GraphicsStroke + GraphicsBitmapFill

lineGradientStyle()

GraphicsStroke + GraphicsGradientFill

lineShaderStyle()

GraphicsStroke + GraphicsShaderFill

lineStyle()

GraphicsStroke + GraphicsSolidFill

moveTo()

lineTo()

curveTo()

drawPath()

GraphicsPath

drawTriangles()

GraphicsTrianglePath

또한 GraphicsPath 클래스 에는 고유한 GraphicsPath.moveTo() , GraphicsPath.lineTo() , GraphicsPath.curveTo() , GraphicsPath.wideLineTo() GraphicsPath.wideMoveTo() 유틸리티 메서드가 있으므로 GraphicsPath 인스턴스에 대한 이러한 명령을 손쉽게 정의할 수 있습니다. 이러한 유틸리티 메서드를 사용하면 명령 및 데이터 값을 직접 정의하거나 업데이트하기가 쉽습니다.

벡터 그래픽 데이터로 그리기

IGraphicsData 인스턴스의 컬렉션이 있는 경우 Graphics 클래스의 drawGraphicsData() 메서드를 사용하여 그래픽을 렌더링합니다. drawGraphicsData() 메서드는 IGraphicsData 인스턴스의 벡터에서 순서대로 드로잉 명령 집합을 수행합니다.

// 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(GraphicsPathCommand.MOVE_TO, GraphicsPathCommand.LINE_TO, GraphicsPathCommand.LINE_TO); 
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);

예제의 드로잉에 사용된 패스의 값 하나를 수정하여 보다 복잡한 이미지로 해당 모양을 여러 번 다시 그릴 수 있습니다.

// 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);

IGraphicsData 객체는 채우기 및 획 스타일을 정의할 수 있지만 채우기 및 획 스타일이 반드시 필요한 것은 아닙니다. 즉, Graphics 클래스 메서드는 스타일을 설정하는 데 사용하고 IGraphicsData 객체는 패스의 저장된 컬렉션을 그리는 데 사용하거나 그 반대로 사용할 수 있습니다.

참고: 위의 예제와 같이 원래 드로잉에 드로잉을 추가하려는 경우가 아니면 새 드로잉을 시작하기 전에 Graphics.clear() 메서드를 사용하여 이전 드로잉을 지웁니다. 패스의 단일 부분이나 IGraphicsData 객체의 컬렉션을 변경할 때는 드로잉 전체를 다시 그려 변경 내용을 확인합니다.

그래픽 데이터 클래스를 사용할 경우 모양은 본질적으로 세 번째 이후의 점에서 닫히므로 세 개 이상의 점을 그릴 때마다 채우기가 렌더링됩니다. 채우기가 닫히더라도 획은 닫히지 않으며 이 비헤이비어는 여러 개의 Graphics.lineTo() 또는 Graphics.moveTo() 명령을 사용할 때와는 다릅니다.

벡터 그래픽 데이터 읽기

벡터 내용을 표시 객체에 그리는 동작 외에도 Flash Player 11.6 및 Adobe AIR 3.6 이상에서는 Graphics 클래스의 readGraphicsData( ) 메서드를 사용하여 표시 객체의 벡터 그래픽 내용에 대한 데이터 표현을 얻을 수 있습니다. 이를 통해 그래픽의 스냅샷을 만들어 런타임에 스프라이트 시트를 저장, 복사, 생성하는 등의 작업을 할 수 있습니다.

readGraphicsData() 메서드를 호출하면 IGraphicsData 객체가 포함된 Vector 인스턴스가 반환됩니다. 이는 drawGraphicsData() 메서드로 벡터 그래픽을 그리는 데 사용되는 객체와 동일한 객체입니다.

readGraphicsData() 메서드로 벡터 그래픽을 읽는 데에는 몇 가지 제약이 있습니다. 자세한 내용은 ActionScript 언어 참조 설명서의 readGraphicsData() 항목 을 참조하십시오.