我在flash cs6中创建了一个按钮 命名为画线 它可以在课件中画出无数条线 我又创建了一个按钮 名字为擦除 怎么可以让他用as2的语言实现类似于橡皮檫效果去擦除我所画的线
时间: 2024-05-25 22:17:37 浏览: 97
Flash CS6动画案例项目:引导层和遮罩层动画的制作.pptx
以下是AS2代码示例,可以实现擦除画线的功能:
// 定义两个变量,用于记录当前画线的颜色和粗细
var lineColor:Number = 0x000000;
var lineThickness:Number = 5;
// 定义一个数组,用于存储画出来的线段
var lines:Array = new Array();
// 为画线按钮添加点击事件
画线.onRelease = function() {
// 定义一个新的MovieClip,用于画线
var line:MovieClip = _root.createEmptyMovieClip("line"+lines.length, _root.getNextHighestDepth());
// 设置线条的颜色和粗细
line.lineStyle(lineThickness, lineColor);
// 记录鼠标按下的位置
line.moveTo(_xmouse, _ymouse);
// 为舞台添加鼠标移动事件,实时更新线条的终点位置
_root.onMouseMove = function() {
line.lineTo(_xmouse, _ymouse);
}
// 为舞台添加鼠标松开事件,停止画线,并将该线段添加到数组中
_root.onMouseUp = function() {
delete _root.onMouseMove;
delete _root.onMouseUp;
lines.push(line);
}
}
// 为擦除按钮添加点击事件
擦除.onRelease = function() {
// 遍历所有已经画出来的线段
for (var i:Number = 0; i < lines.length; i++) {
// 如果该线段和鼠标位置重合,说明需要删除该线段
if (lines[i].hitTest(_xmouse, _ymouse, true)) {
_root.removeChild(lines[i]);
lines.splice(i, 1);
i--;
}
}
}
代码解释:
1. 定义两个变量 lineColor 和 lineThickness,用于记录当前画线的颜色和粗细。
2. 定义一个数组 lines,用于存储画出来的线段。
3. 为画线按钮添加 onRelease 事件,实现画线功能。在事件处理函数中,创建一个新的 MovieClip,设置它的颜色和粗细,然后记录鼠标按下的位置,并为舞台添加 onMouseMove 事件,实时更新线条的终点位置。在 onMouseUp 事件中,停止画线,并将该线段添加到数组中。
4. 为擦除按钮添加 onRelease 事件,实现擦除功能。在事件处理函数中,遍历所有已经画出来的线段,如果该线段和鼠标位置重合,说明需要删除该线段。使用 removeChild() 方法将该线段从舞台上删除,并使用 splice() 方法将它从数组中删除。注意要将 i 值减一,因为数组长度已经改变。
阅读全文