Flash课件中可以动态绘制矩形吗?答案是肯定的。上篇博文我们谈到了如何在Flash课件中使用AS3.0代码即时绘制圆形,今天我们来谈谈如何在Flash课件中使用AS3.0实时动态绘制矩形。在这个课件中同样使用到三个鼠标事件,分别是MouseEvent.MOUSE_DOWN、MouseEvent.MOUSE_UP和MouseEvent.MOUSE_MOVE。侦听MOUSE_DOWN事件,用来记录鼠标按下位置的x和y坐标,这也是矩形绘制的起点;侦听MOUSE_MOVE事件,用来绘制矩形,通过鼠标移动的距离可以确定矩形的长和宽;计算侦听MOUSE_UP事件,我们结束了全部的绘制动作。
绘制矩形需要用到drawRect()方法,该方法需要传递四个参数:x坐标、y坐标、矩形的长度和宽度。前两个参数在MOUSE_DOWN事件处理函数里已经获得。我们能通过计算鼠标移动后的位置和原始位置的差值来计算出矩形的长和宽:
mysprite.graphics.drawRect(dx,dy,mouseX-dx,mouseY-dy);
绘制矩形和圆形的基本原理是相同的,只是具体使用到的方法有所不同。
学习Flash制作,请上Flash技术站点。
import flash.events.MouseEvent;
var dx:Number;
var dy:Number;
var vx:Number;
var mysprite:Sprite=new Sprite();
addChild(mysprite);
stage.addEventListener(MouseEvent.MOUSE_DOWN,ondown);
stage.addEventListener(MouseEvent.MOUSE_UP,onup);
function ondown(e:MouseEvent):void {
dx = mouseX;
dy = mouseY;
stage.addEventListener(MouseEvent.MOUSE_MOVE,onmove);
}
function onmove(e:MouseEvent):void {;
mysprite.graphics.clear();
mysprite.graphics.lineStyle(2,0xff0000);
mysprite.graphics.drawRect(dx,dy,mouseX-dx,mouseY-dy);
}
function onup(e:MouseEvent):void {;
stage.removeEventListener(MouseEvent.MOUSE_MOVE,onmove);
}