这些是我使用的变量:
var isStartDrawLineTool:Boolean=false;
var myDrawingLine:MovieClip;
var temporaryDrawingLine:Shape;
我的功能(用于画线):
drawLine();
function drawLine():void {
if (isStartDrawLineTool == true) {
myDrawingLine = new MovieClip();
temporaryDrawingLine = new Shape();
stage.addEventListener(MouseEvent.MOUSE_DOWN, mDownLine);
stage.addEventListener(MouseEvent.MOUSE_UP, mUpLine);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mMoveLine);
temporaryDrawingLine.graphics.lineStyle(brushSize, brushColor, brushAlpha);
myDrawingLine.graphics.lineStyle(brushSize, brushColor, .5);
desktop.addChild(myDrawingLine);
desktop.addChild(temporaryDrawingLine);
} else {
stage.removeEventListener(MouseEvent.MOUSE_UP, mUpLine);
stage.removeEventListener(MouseEvent.MOUSE_DOWN, mDownLine);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mMoveLine);
temporaryDrawingLine.graphics.lineStyle(0, 0x00000, 0);
myDrawingLine.graphics.lineStyle(0, 0x000000, 0);
}
}
我得到的错误是:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at app4_fla::MainTimeline/drawLine()
at app4_fla::MainTimeline/frame52()
我无法找到任何解决方案。我将不胜感激任何帮助。
答案 0 :(得分:0)
您收到的错误意味着正在引用变量但从未实例化过。
从您的简短代码部分,我看不到desktop
在任何地方实例化。
我猜这是一个某种类型的显示对象(Sprite / Movieclip),因为你正在尝试添加一个子对象。尝试在drawLine()
方法中实例化此变量。
答案 1 :(得分:0)
可能是您的desktop
对象为空或在drawLine()
运行时,您的两个MovieClip temporaryDrawingLine
和myDrawingLine
可能为空。这是因为在drawLine()
中如果isStartDrawLineTool
设置为false(您的代码未将其设置为true),则尝试访问可能尚未创建的两个MovieClip。
相反,如果isStartDrawLineTool
为真,您将实例化两个MovieClip,因此它们不会为空。
您可以从new MovieClip()
中删除drawLine()
实例,并将其置于上面:
myDrawingLine = new MovieClip(); //new movieclips here
temporaryDrawingLine = new Shape();
drawLine();
function drawLine():void {
if (isStartDrawLineTool == true) {
stage.addEventListener(MouseEvent.MOUSE_DOWN, mDownLine);
stage.addEventListener(MouseEvent.MOUSE_UP, mUpLine);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mMoveLine);
.....
答案 2 :(得分:0)
Stage仅在将实例添加到舞台时才可用,因此您需要在尝试访问它之前等待它。
所以改变
drawLine();
要
this.addEventListener(Event.ADDED_TO_STAGE, drawLine);
另外你没有说明你在哪里定义brushSize,brushColor,brushAlpha这也可能是一个问题