在flash ca6中 我创建了一个可以在课件上画线的按钮 它可以画无数条直线 我创建了一个按钮名为pp 我需要这个按钮被点击的时候可以拖动擦除我的线
时间: 2024-06-12 15:08:24 浏览: 77
要实现这个功能,你需要做以下步骤:
1. 给你的pp按钮添加如下代码:
```
pp.addEventListener(MouseEvent.CLICK, startErasing);
stage.addEventListener(MouseEvent.MOUSE_MOVE, eraseLine);
stage.addEventListener(MouseEvent.MOUSE_UP, stopErasing);
```
这段代码将为pp按钮添加三个事件监听器,分别是点击事件、鼠标移动事件和鼠标放开事件。当点击pp按钮时,会调用函数startErasing;当鼠标移动时,会调用函数eraseLine;当鼠标放开时,会调用函数stopErasing。
2. 实现startErasing函数:
```
function startErasing(event:MouseEvent):void {
// 记录当前状态为擦除状态
isErasing = true;
// 显示鼠标为橡皮擦
Mouse.cursor = "button";
}
```
这个函数将记录当前的状态为擦除状态,并将鼠标图标设为橡皮擦。
3. 实现eraseLine函数:
```
function eraseLine(event:MouseEvent):void {
if (isErasing) {
// 如果当前处于擦除状态,则获取鼠标当前位置
var mouseXpos:Number = mouseX;
var mouseYpos:Number = mouseY;
// 遍历所有的线段,如果鼠标位置与线段相交,则删除该线段
for (var i:int = 0; i < lines.length; i++) {
var line:Shape = lines[i];
var bounds:Rectangle = line.getBounds(stage);
if (bounds.contains(mouseXpos, mouseYpos)) {
removeChild(line);
lines.splice(i, 1);
break;
}
}
}
}
```
这个函数将判断当前是否处于擦除状态,如果是,则获取鼠标的当前位置,并遍历所有的线段,如果鼠标位置与线段相交,则删除该线段。
4. 实现stopErasing函数:
```
function stopErasing(event:MouseEvent):void {
// 记录当前状态为非擦除状态
isErasing = false;
// 显示鼠标为默认状态
Mouse.cursor = "auto";
}
```
这个函数将记录当前的状态为非擦除状态,并将鼠标图标设为默认状态。
5. 定义一个数组用于存储所有的线段:
```
var lines:Array = new Array();
```
6. 当你创建直线时,将直线添加到数组中:
```
var line:Shape = new Shape();
line.graphics.lineStyle(3, 0x000000);
addChild(line);
lines.push(line);
```
这段代码将创建一个线段,并将其添加到显示列表中和数组中。
这样,当你点击pp按钮时,就可以拖动擦除你的线了。