Flash中我们使用graphics类可以绘制一些常见的图像,例如:使用drawRect()方法可以绘制矩形、使用drawRoundRect()可以绘制圆角矩形、drawCircle()可以绘制圆形 和 drawEllipse()可以绘制椭圆形。 这些方法通过传递简单的参数就可以绘制出上述的图形。今天本人发布一个绘制三角形的Flash课件,我们通过在面板上任意位置点上三个端点,课件就会自动为你绘制一个三角形。下面我们就来说说制作方法:
一、绘制三角形的端点
我们在程序中使用一个公共变量count,用着计时器。并创建了两个数组,用来记录端点的坐标。当我们点击面板时,会绘制一个端点,计时器加1,数组中添加了一个元素。当我们在面板上单击三次的时候使用,已经满足了绘制三角形的条件。
二、绘制三角形
当count等于2时,表示已经有了三个端点,程序开始绘制三角形。我们使用for循环,配合存储坐标的两个个数组,运用moveTo()和lineTo()方法依此将三个点用线连起来。注意最后将第三个点和第一个连起来。注意:还要将侦听事件移除,不然的话,当我们点击面板的时候程序仍会绘制端点的,这可不是我们想要的。
三、清屏
单击擦除按钮面板自动清除,需要将count归0,并且清空数组,重新侦听鼠标 事件。
Code:
import flash.display.Shape;
/*
Flash课件制作
http://www.flashabc.net
*/
var spBoard:Sprite=new Sprite();
this.addChild(spBoard);
spBoard.x = 10;
spBoard.y = 10;
var count:int = 0;
var xArray:Array=new Array();
var yArray:Array=new Array();
var triangle:Shape = new Shape? ;
addChild(triangle);
var doDraw:Boolean = false;
var lineSize:Number = 1;
var shDrawing:Shape=new Shape();
spBoard.addChild(shDrawing);
spBoard.graphics.lineStyle(1,0x000000);
spBoard.graphics.beginFill(0xFFFFFF);
spBoard.graphics.drawRect(0,0,240,240);
spBoard.graphics.endFill();
spBoard.filters = [ new DropShadowFilter() ];
spBoard.addEventListener(MouseEvent.CLICK,onClick);
function onClick(e:MouseEvent):void
{
count++;
shDrawing.graphics.lineStyle(1,0xff0000);
shDrawing.graphics.drawCircle(shDrawing.mouseX,shDrawing.mouseY,1);
xArray.push(shDrawing.mouseX);
yArray.push(shDrawing.mouseY);
if (count == 3)
{
for (var i:int=0; i<count-1; i++)
{
shDrawing.graphics.lineStyle(2,0x0000ff);
shDrawing.graphics.moveTo(xArray[i],yArray[i]);
shDrawing.graphics.lineTo(xArray[i+1],yArray[i+1]);
}
shDrawing.graphics.moveTo(xArray[i],yArray[i]);
shDrawing.graphics.lineTo(xArray[i-2],yArray[i-2]);
spBoard.removeEventListener(MouseEvent.CLICK,onClick);
}
}
btnErase.addEventListener(MouseEvent.CLICK, eraseClicked);
function eraseClicked(e:MouseEvent):void
{
shDrawing.graphics.clear();
spBoard.addEventListener(MouseEvent.CLICK,onClick);
count = 0;
xArray = [];
yArray = [];
}