Actionscript 绘制线条,并获取错误代码#1009

Actionscript 绘制线条,并获取错误代码#1009,actionscript,draw,lines,Actionscript,Draw,Lines,我遇到了一个似乎无法解决的问题。我正在制作一个动画,它在一个移动的物体后画一条线(在一条引导线上画一个圆)。这个圆圈是一个电影唇,我有很多线要画。所以,我把他们中的许多人放在不同的场景中。我从movieclips中创建了按钮,按下按钮时会画一条线。我让一切正常工作,但当绘制一条直线时,您按相同的按钮再次绘制同一条直线,我会得到错误代码:\1009无法访问空对象引用的属性或方法。 我认为这是因为图形仍然存在,但在再次绘制之前,我似乎无法清除它。我使用了graphics.clear()但这只是清除所

我遇到了一个似乎无法解决的问题。我正在制作一个动画,它在一个移动的物体后画一条线(在一条引导线上画一个圆)。这个圆圈是一个电影唇,我有很多线要画。所以,我把他们中的许多人放在不同的场景中。我从movieclips中创建了按钮,按下按钮时会画一条线。我让一切正常工作,但当绘制一条直线时,您按相同的按钮再次绘制同一条直线,我会得到错误代码:
\1009无法访问空对象引用的属性或方法。

我认为这是因为图形仍然存在,但在再次绘制之前,我似乎无法清除它。我使用了
graphics.clear()但这只是清除所有,所以当它再次“绘制”时,它不会显示,只有movieclip动画工作。这里有什么问题

我的线条图代码为:

import flash.display.Shape;
import flash.events.Event;

var shape = new Shape();
shape.graphics.lineStyle(2,0xFF0000);
shape.graphics.moveTo(ani1.x, ani1.y);
addChild(shape);

addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void
{
    shape.graphics.lineTo(ani1.x, ani1.y);
}
按钮的代码为:

import flash.events.MouseEvent;

stop();

menu_button1.addEventListener (MouseEvent.CLICK, buttonClick);

function buttonClick (event:MouseEvent):void
{
    gotoAndPlay(2, "AniDel1");
}

所有的动画都有一个
stop()在最后。

我为您准备了一个fla示例:


希望这能解决你的问题。

试着摆脱这些场景,它们是邪恶的。我不知道在使用场景时变量的作用域/生存期是什么。错误可能来自输入帧侦听器:它仍在运行,但形状不再定义,因为您切换了场景…我现在尝试了,但不起作用。。弹出相同的错误代码:/但感谢您的帮助:)还有其他想法吗?“ani1”是圆吗!?圆圈是否出现在时间线的所有帧上?时间轴上是否有多个关键帧,是否在每个关键帧中设置了圆的名称?errormsg是否说明了发生空指针异常的代码行?好的,我昨天做了一些更改,使它工作得更好,但仍然有问题ani1'是从第二帧开始的圆,上面有图纸代码。(在第1帧中是按钮的代码)我没有在第230帧结束时使用关键帧。在此关键帧中是停止代码。(圆圈在所有帧中都有相同的名称)由于有更多的动画,整个thiong停止在第686帧。到这一点,每个层都有帧(不是关键帧,只是一个带有白色矩形的帧)。我昨天使用了som代码;ani1.graphics.clear();和ani1.visible=false;在新动画开始时,只需尝试删除或隐藏它,只要它们按正确的顺序播放,它就可以工作,但当您只选择一个随机按钮时,它会出现许多错误..当ctrl+enter:error 1010:术语未定义时,没有属性,第1帧。(所有按钮都是带有instancenames的movieclips)hnaks:)这太棒了!但我让他工作,唯一的问题是当你做更多的按钮,画更多的线。你能举一个例子,它有按钮“a”和按钮“b”,其中有两张图,在第一张图之后绘制,例如3或4帧,(在不同的层上),当你点击按钮“a”时,它绘制SE,当你点击“b”时,它清除“a”中绘制的内容,并在“b”上绘制内容?如果勾选了“a”和“a”又一次,它只是清除它,从头开始画?我不善于解释:p但你明白吗?:)@cat你应该考虑在类中编写代码,摆脱时间线。你的项目越复杂,就越难在时间表上维护一切。在IDE中创建动画资源,将它们全部导出为SWC,并编写一个控制所有内容的类。