Flash ActionScript 30 语言和组件参考Graphics.docx
《Flash ActionScript 30 语言和组件参考Graphics.docx》由会员分享,可在线阅读,更多相关《Flash ActionScript 30 语言和组件参考Graphics.docx(60页珍藏版)》请在冰豆网上搜索。
FlashActionScript30语言和组件参考Graphics
包
flash.display
类
publicfinalclassGraphics
继承
Graphics
Object
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
Graphics类包含一组可用来创建矢量形状的方法。
支持绘制的显示对象包括Sprite和Shape对象。
这些类中的每一个类都包括graphics属性,该属性是一个Graphics对象。
以下是为便于使用而提供的一些辅助函数:
drawRect()、drawRoundRect()、drawCircle()和drawEllipse()。
无法通过ActionScript代码直接创建Graphics对象。
如果调用newGraphics(),则会引发异常。
Graphics类是最终类;无法从其派生子类。
查看示例
公共属性
隐藏继承的公共属性
显示继承的公共属性
属性
定义方
constructor:
Object
对类对象或给定对象实例的构造函数的引用。
Object
prototype:
Object
[静态]对类或函数对象的原型对象的引用。
Object
公共方法
隐藏继承的公共方法
显示继承的公共方法
方法
定义方
beginBitmapFill(bitmap:
BitmapData,matrix:
Matrix=null,repeat:
Boolean=true,smooth:
Boolean=false):
void
用位图图像填充绘图区。
Graphics
beginFill(color:
uint,alpha:
Number=1.0):
void
指定一种简单的单一颜色填充,FlashPlayer可将该填充用于随后调用对象的其它Graphics方法(如lineTo()或drawCircle())。
Graphics
beginGradientFill(type:
String,colors:
Array,alphas:
Array,ratios:
Array,matrix:
Matrix=null,spreadMethod:
String="pad",interpolationMethod:
String="rgb",focalPointRatio:
Number=0):
void
指定一种渐变填充,用于随后调用对象的其他Graphics方法(如lineTo()或drawCircle())。
Graphics
beginShaderFill(shader:
Shader,matrix:
Matrix=null):
void
指定一个着色器填充,供FlashPlayer用于对该对象的其他Graphics方法(如lineTo()或drawCircle())的后续调用。
Graphics
clear():
void
清除绘制到此Graphics对象的图形,并重置填充和线条样式设置。
Graphics
copyFrom(sourceGraphics:
Graphics):
void
将源Graphics对象中的所有绘画命令复制到执行调用的Graphics对象中。
Graphics
curveTo(controlX:
Number,controlY:
Number,anchorX:
Number,anchorY:
Number):
void
使用当前线条样式和由(controlX,controlY)指定的控制点绘制一条从当前绘画位置开始到(anchorX,anchorY)结束的曲线。
Graphics
drawCircle(x:
Number,y:
Number,radius:
Number):
void
绘制一个圆。
Graphics
drawEllipse(x:
Number,y:
Number,width:
Number,height:
Number):
void
绘制一个椭圆。
Graphics
drawGraphicsData(graphicsData:
Vector.):
void
提交一系列IGraphicsData实例来进行绘图。
Graphics
drawPath(commands:
Vector.,data:
Vector.,winding:
String="evenOdd"):
void
提交一系列绘制命令。
Graphics
drawRect(x:
Number,y:
Number,width:
Number,height:
Number):
void
绘制一个矩形。
Graphics
drawRoundRect(x:
Number,y:
Number,width:
Number,height:
Number,ellipseWidth:
Number,ellipseHeight:
Number=NaN):
void
绘制一个圆角矩形。
Graphics
drawTriangles(vertices:
Vector.,indices:
Vector.=null,uvtData:
Vector.=null,culling:
String="none"):
void
呈现一组三角形(通常用于扭曲位图),并为其指定三维外观。
Graphics
endFill():
void
对从上一次调用beginFill()、beginGradientFill()或beginBitmapFill()方法之后添加的直线和曲线应用填充。
Graphics
hasOwnProperty(name:
String):
Boolean
指示对象是否已经定义了指定的属性。
Object
isPrototypeOf(theClass:
Object):
Boolean
指示Object类的实例是否在指定为参数的对象的原型链中。
Object
lineBitmapStyle(bitmap:
BitmapData,matrix:
Matrix=null,repeat:
Boolean=true,smooth:
Boolean=false):
void
指定一个位图,用于绘制线条时的线条笔触。
Graphics
lineGradientStyle(type:
String,colors:
Array,alphas:
Array,ratios:
Array,matrix:
Matrix=null,spreadMethod:
String="pad",interpolationMethod:
String="rgb",focalPointRatio:
Number=0):
void
指定一种渐变,用于绘制线条时的笔触。
Graphics
lineShaderStyle(shader:
Shader,matrix:
Matrix=null):
void
指定一个着色器以用于绘制线条时的线条笔触。
Graphics
lineStyle(thickness:
Number=NaN,color:
uint=0,alpha:
Number=1.0,pixelHinting:
Boolean=false,scaleMode:
String="normal",caps:
String=null,joints:
String=null,miterLimit:
Number=3):
void
指定一种线条样式以用于随后对lineTo()或drawCircle()等Graphics方法的调用。
Graphics
lineTo(x:
Number,y:
Number):
void
使用当前线条样式绘制一条从当前绘画位置开始到(x,y)结束的直线;当前绘画位置随后会设置为(x,y)。
Graphics
moveTo(x:
Number,y:
Number):
void
将当前绘画位置移动到(x,y)。
Graphics
propertyIsEnumerable(name:
String):
Boolean
指示指定的属性是否存在、是否可枚举。
Object
setPropertyIsEnumerable(name:
String,isEnum:
Boolean=true):
void
设置循环操作动态属性的可用性。
Object
toString():
String
返回指定对象的字符串表示形式。
Object
valueOf():
Object
返回指定对象的原始值。
Object
方法详细信息
beginBitmapFill
()
方法
publicfunctionbeginBitmapFill(bitmap:
BitmapData,matrix:
Matrix=null,repeat:
Boolean=true,smooth:
Boolean=false):
void
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
用位图图像填充绘图区。
可以重复或平铺位图以填充该区域。
该填充将保持有效,直到您调用beginFill()、beginBitmapFill()、beginGradientFill()或beginShaderFill()方法。
调用clear()方法会清除填充。
只要绘制3个或3个以上的点或调用endFill()方法,FlashPlayer就会呈现填充。
参数
bitmap:
BitmapData—包含要显示的位的透明或不透明位图图像。
matrix:
Matrix(default=null)—一个matrix对象(属于flash.geom.Matrix类),您可以使用它在位图上定义转换。
例如,可以使用以下矩阵将位图旋转45度(pi/4弧度):
matrix=newflash.geom.Matrix();
matrix.rotate(Math.PI/4);
repeat:
Boolean(default=true)—如果为true,则位图图像按平铺模式重复。
如果为false,位图图像不会重复,并且位图边缘将用于所有扩展出位图的填充区域。
例如,请考虑下列位图(20x20像素的棋盘图案):
当repeat设置为true时(如下例所示),位图填充将重复位图:
repeat设置为false时,位图填充将对位图外部的填充区域使用边缘像素:
smooth:
Boolean(default=false)—如果为false,则使用最近邻点算法来呈现放大的位图图像,而且该图像看起来是像素化的。
如果为true,则使用双线性算法来呈现放大的位图图像。
使用最近邻点算法呈现较快。
另请参见
endFill()
beginFill()
beginGradientFill()
示例
下面的示例使用一个图像(image1.jpg),它不断旋转并反复填充一个矩形。
1.使用Loader和URLRequest对象加载此图像文件(image1.jpg)。
此处,该文件位于与SWF文件相同的目录中。
需要编译SWF文件,并将“本地回放安全性”设置为“只访问本地文件”。
2.在加载图像后(Event为complete),将调用drawImage()方法。
如果未正确加载图像,ioErrorHandler()方法将写入跟踪注释。
3.在drawImage()方法中,将实例化BitmapData对象,并将其宽度和高度设置为图像(image1.jpg)的宽度和高度。
然后,将源图像绘制到BitmapData对象中。
接下来,在mySpriteSprite对象中绘制一个矩形,并使用BitmapData对象对其进行填充。
通过使用Matrix对象,beginBitmapFill()方法将图像旋转45度,然后开始使用图像填充矩形,直至完成时为止。
package{
importflash.display.Sprite;
importflash.display.BitmapData;
importflash.display.Loader;
import.URLRequest;
importflash.events.Event;
importflash.events.IOErrorEvent;
importflash.geom.Matrix;
publicclassGraphics_beginBitmapFillExampleextendsSprite{
privatevarurl:
String="image1.jpg";
privatevarloader:
Loader=newLoader();
publicfunctionGraphics_beginBitmapFillExample(){
varrequest:
URLRequest=newURLRequest(url);
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,drawImage);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
}
privatefunctiondrawImage(event:
Event):
void{
varmySprite:
Sprite=newSprite();
varmyBitmap:
BitmapData=newBitmapData(loader.width,loader.height,false);
myBitmap.draw(loader,newMatrix());
varmatrix:
Matrix=newMatrix();
matrix.rotate(Math.PI/4);
mySprite.graphics.beginBitmapFill(myBitmap,matrix,true);
mySprite.graphics.drawRect(100,50,200,90);
mySprite.graphics.endFill();
addChild(mySprite);
}
privatefunctionioErrorHandler(event:
IOErrorEvent):
void{
trace("Unabletoloadimage:
"+url);
}
}
}
beginFill
()
方法
publicfunctionbeginFill(color:
uint,alpha:
Number=1.0):
void
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
指定一种简单的单一颜色填充,FlashPlayer可将该填充用于随后调用对象的其它Graphics方法(如lineTo()或drawCircle())。
该填充将保持有效,直到您调用beginFill()、beginBitmapFill()、beginGradientFill()或beginShaderFill()方法。
调用clear()方法会清除填充。
只要绘制3个或3个以上的点或调用endFill()方法,FlashPlayer就会呈现填充。
参数
color:
uint—填充的颜色(0xRRGGBB)。
alpha:
Number(default=1.0)—填充的Alpha值(从0.0到1.0)。
另请参见
endFill()
beginBitmapFill()
beginGradientFill()
示例
如何使用示例
有关如何使用此方法的说明,请参阅此类末尾的示例。
beginGradientFill
()
方法
publicfunctionbeginGradientFill(type:
String,colors:
Array,alphas:
Array,ratios:
Array,matrix:
Matrix=null,spreadMethod:
String="pad",interpolationMethod:
String="rgb",focalPointRatio:
Number=0):
void
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
指定一种渐变填充,用于随后调用对象的其他Graphics方法(如lineTo()或drawCircle())。
该填充将保持有效,直到您调用beginFill()、beginBitmapFill()、beginGradientFill()或beginShaderFill()方法。
调用clear()方法会清除填充。
只要绘制3个或3个以上的点或调用endFill()方法,FlashPlayer就会呈现填充。
参数
type:
String—用于指定要使用哪种渐变类型的GradientType类的值:
GradientType.LINEAR或GradientType.RADIAL。
colors:
Array—渐变中使用的RGB十六进制颜色值的数组(例如,红色为0xFF0000,蓝色为0x0000FF,等等)。
可以至多指定15种颜色。
对于每种颜色,请在alphas和ratios参数中指定对应值。
alphas:
Array—colors数组中对应颜色的alpha值数组;有效值为0到1。
如果值小于0,则默认值为0。
如果值大于1,则默认值为1。
ratios:
Array—颜色分布比率的数组;有效值为0到255。
该值定义100%采样的颜色所在位置的宽度百分比。
值0表示渐变框中的左侧位置,255表示渐变框中的右侧位置。
注意:
此值表示渐变框中的位置,而不是最终渐变的坐标空间,最终渐变可能会比渐变框更宽或更窄。
为colors参数中的每个值指定一个值。
例如,对于包括蓝和绿两种颜色的线性渐变,下例显示了基于不同ratios数组值的渐变中的颜色配比:
数组中的值必须持续增加;例如,[0,63,127,190,255]。
matrix:
Matrix(default=null)—一个由flash.geom.Matrix类定义的转换矩阵。
flash.geom.Matrix类包括createGradientBox()方法,通过该方法可以方便地设置矩阵,以便与beginGradientFill()方法一起使用。
spreadMethod:
String(default="pad")—用于指定要使用哪种spread方法的SpreadMethod类的值:
SpreadMethod.PAD、SpreadMethod.REFLECT或SpreadMethod.REPEAT。
例如,请考虑两种颜色之间的简单线性渐变:
importflash.geom.*
importflash.display.*
varfillType:
String=GradientType.LINEAR;
varcolors:
Array=[0xFF0000,0x0000FF];
varalphas:
Array=[1,1];
varratios:
Array=[0x00,0xFF];
varmatr:
Matrix=newMatrix();
matr.createGradientBox(20,20,0,0,0);
varspreadMethod:
String=SpreadMethod.PAD;
this.graphics.beginGradientFill(fillType,colors,alphas,ratios,matr,spreadMethod);
this.graphics.drawRect(0,0,100,100);
此示例将SpreadMethod.PAD用于spread方法,并且渐变填充看起来将类似于下图:
如果将SpreadMethod.REFLECT用于spread方法,则渐变填充看起来将类似于下图:
如果将SpreadMethod.REPEAT用于spread方法,则渐变填充看起来将类似于下图:
interpolationMethod:
String(default="rgb")—用于指定要使用哪个值的InterpolationMethod类的值:
InterpolationMethod.LINEAR_RGB或InterpolationMethod.RGB
例如,假设有两种颜色之间的简单线性渐变(spreadMethod参数设置为SpreadMethod.REFLECT)。
不同的插值方法对外观的影响如下所示:
focalPointRatio:
Number(default=0)—一个控制渐变的焦点位置的数字。
0表示焦点位于中心。
1表示焦点位于渐变圆的一条边界上。
-1表示焦点位于渐变圆的另一条边界上。
小于-1或大于1的值将舍入为-1或1。
例如,