如何使用 AS3 中的按钮清除绘制的线(在函数内)
How to clear drawn line (inside a function) using button in AS3
已经使用以下代码(在函数内)在点之间画线。我需要使用按钮清除这些线。
var v = 0;
function getLocation(a,b,c,d,e)
{
if (v>0)
{
var line1:MovieClip = new MovieClip();
line1.graphics.lineStyle(2,0x00CCFF);
line1.graphics.moveTo(a,b);
line1.graphics.lineTo(c,d);
this.addChild(line1);
}
else
{
v++;
var line2:MovieClip = new MovieClip();
line2.graphics.lineStyle(2,0x00CCFF);
line2.graphics.moveTo(a,b);
line2.graphics.lineTo(mouseX,mouseY);
this.addChild(line2);
}
}
使用数组如何。
var v = 0;
var arr: Array = new Array();
function getLocation(a,b,c,d,e)
{
if (v>0)
{
var line1:MovieClip = new MovieClip();
line1.graphics.lineStyle(2,0x00CCFF);
line1.graphics.moveTo(a,b);
line1.graphics.lineTo(c,d);
arr.push(line1);
this.addChild(line1);
}
else
{
v++;
var line2:MovieClip = new MovieClip();
line2.graphics.lineStyle(2,0x00CCFF);
line2.graphics.moveTo(a,b);
line2.graphics.lineTo(mouseX,mouseY);
arr.push(line2);
this.addChild(line2);
}
}
function removeLine(): void
{
if (arr.length != 0) {
var mc:MovieClip = arr.pop();
this.removeChild(mc);
}
}
一个简单的解决方案是给动画片段一个实例名称,然后稍后清除它
var v:Number = 0;
function getLocation(a,b,c,d,e)
{
//find out previous clip, based on v variable;
var ch:MovieClip = this.getChildByName("myline"+(v-1)) as MovieClip;
if(ch)
{
ch.graphics.clear();
//even remove it because seems like you dont need it any more
this.removeChild(ch);
}
var line:MovieClip = new MovieClip();
line.name = "myline"+v;//give it a name, help in finding later
line.graphics.lineStyle(2,0x00CCFF);
line.graphics.moveTo(a,b);
if (v>0)
{
line.graphics.lineTo(c,d);
}
else
{
v++;
line.graphics.lineTo(mouseX,mouseY);
}
this.addChild(line);
}
除非你有特殊要求,否则我建议你使用以下内容
var v:Number = 0;
var line:MovieClip;
function getLocation(a,b,c,d,e)
{
if(line==null)
{
line = new MovieClip;
addChild(line);
}
else
{
line.graphics.clear();
}
line.graphics.lineStyle(2,0x00CCFF);
line.graphics.moveTo(a,b);
if (v>0)
{
line.graphics.lineTo(c,d);
}
else
{
v++;
line.graphics.lineTo(mouseX,mouseY);
}
}
//It can be cleared from here as well
function onButtonClickHandler(e:MouseEvent)
{
if(line)
{
line.graphics.clear();
}
}
将所有行放入一个容器中:
var lines:Sprite = new Sprite();
addChild(lines);
function getLocation(a, b, c, d) {
// ...
lines.addChild(line);
}
然后删除它们使用:
lines.removeChildren();
已经使用以下代码(在函数内)在点之间画线。我需要使用按钮清除这些线。
var v = 0;
function getLocation(a,b,c,d,e)
{
if (v>0)
{
var line1:MovieClip = new MovieClip();
line1.graphics.lineStyle(2,0x00CCFF);
line1.graphics.moveTo(a,b);
line1.graphics.lineTo(c,d);
this.addChild(line1);
}
else
{
v++;
var line2:MovieClip = new MovieClip();
line2.graphics.lineStyle(2,0x00CCFF);
line2.graphics.moveTo(a,b);
line2.graphics.lineTo(mouseX,mouseY);
this.addChild(line2);
}
}
使用数组如何。
var v = 0;
var arr: Array = new Array();
function getLocation(a,b,c,d,e)
{
if (v>0)
{
var line1:MovieClip = new MovieClip();
line1.graphics.lineStyle(2,0x00CCFF);
line1.graphics.moveTo(a,b);
line1.graphics.lineTo(c,d);
arr.push(line1);
this.addChild(line1);
}
else
{
v++;
var line2:MovieClip = new MovieClip();
line2.graphics.lineStyle(2,0x00CCFF);
line2.graphics.moveTo(a,b);
line2.graphics.lineTo(mouseX,mouseY);
arr.push(line2);
this.addChild(line2);
}
}
function removeLine(): void
{
if (arr.length != 0) {
var mc:MovieClip = arr.pop();
this.removeChild(mc);
}
}
一个简单的解决方案是给动画片段一个实例名称,然后稍后清除它
var v:Number = 0;
function getLocation(a,b,c,d,e)
{
//find out previous clip, based on v variable;
var ch:MovieClip = this.getChildByName("myline"+(v-1)) as MovieClip;
if(ch)
{
ch.graphics.clear();
//even remove it because seems like you dont need it any more
this.removeChild(ch);
}
var line:MovieClip = new MovieClip();
line.name = "myline"+v;//give it a name, help in finding later
line.graphics.lineStyle(2,0x00CCFF);
line.graphics.moveTo(a,b);
if (v>0)
{
line.graphics.lineTo(c,d);
}
else
{
v++;
line.graphics.lineTo(mouseX,mouseY);
}
this.addChild(line);
}
除非你有特殊要求,否则我建议你使用以下内容
var v:Number = 0;
var line:MovieClip;
function getLocation(a,b,c,d,e)
{
if(line==null)
{
line = new MovieClip;
addChild(line);
}
else
{
line.graphics.clear();
}
line.graphics.lineStyle(2,0x00CCFF);
line.graphics.moveTo(a,b);
if (v>0)
{
line.graphics.lineTo(c,d);
}
else
{
v++;
line.graphics.lineTo(mouseX,mouseY);
}
}
//It can be cleared from here as well
function onButtonClickHandler(e:MouseEvent)
{
if(line)
{
line.graphics.clear();
}
}
将所有行放入一个容器中:
var lines:Sprite = new Sprite();
addChild(lines);
function getLocation(a, b, c, d) {
// ...
lines.addChild(line);
}
然后删除它们使用:
lines.removeChildren();