错误1061,无法修复

时间:2014-04-14 17:04:51

标签: actionscript-3 constructor static

对AS3来说很新,仍然试图让它发挥作用。这样做时会出现1061错误。

这是我在.fla文件中的代码:

import ResizableBox;

var resizeBox:ResizableBox = new ResizableBox();

ResizableBox.startResize();

然后在名为ResizableBox.as的文件中,这里是代码:

package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;

    public class ResizableBox extends MovieClip{
        public function ResizableBox(){
            addEventListener(MouseEvent.MOUSE_DOWN, startResize);
        }

        private function startResize(e:MouseEvent):void{
            stage.addEventListener(MouseEvent.MOUSE_MOVE, handleResize);
            stage.addEventListener(MouseEvent.MOUSE_UP, stopResize);
        }

        private function stopResize(e:MouseEvent):void{
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleResize);
            stage.removeEventListener(MouseEvent.MOUSE_UP, stopResize);
        }

        private function handleResize(e:MouseEvent):void{
            this.scaleY = 1
            this.height = this.mouseY
        }
    }
}

我不知道为什么我会收到错误。我也试过在公共函数中添加一个静态组件,但后来我得到1026错误(构造函数必须是实例方法)。我一直在寻找我做错了什么,但我无法弄明白。

我还将源路径正确设置到包含.as文件的文件夹。

非常感谢任何帮助!

编辑:

更改了ResizableBox.startResize(); resizeBox.startResize(null);

将public的startResize函数更改为public。

现在,当我运行该东西时,我没有错误,直到我使用此代码移动到框架。

TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::MovieClip@1ddcc6a1 to ResizableBox.

    at flash.display::MovieClip/gotoAndStop()
    at CubeTotem_Test_fla::MainTimeline/goSettings()[CubeTotem_Test_fla.MainTimeline::frame1:27]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at ResizableBox/startResize()[C:\Users\Ecco T1\Documents\ResizableBox.as:12]
    at CubeTotem_Test_fla::MainTimeline/frame6()[CubeTotem_Test_fla.MainTimeline::frame6:20]
    at flash.display::MovieClip/gotoAndStop()
    at CubeTotem_Test_fla::MainTimeline/goSettings()[CubeTotem_Test_fla.MainTimeline::frame1:27]

点击并拖动时,我试图让一个简单的方形缩放赢得Y方向。

最终编辑:让它发挥作用!我必须将框转换为符号并勾选"导出到Actionscript"并给它适当的类标签。现在我只需要从左上角移动它,因为除非我播放动画,否则它不会出现在舞台上

2 个答案:

答案 0 :(得分:1)

在.fla中,替换:

ResizableBox.startResize();

resizeBox.startResize(null);

说明:

  1. startResize()被编码为接受一个参数(MouseEvent对象)。你正在调用它而不给它一个参数。使用空引用调用它可能不是最佳实践,但您可以这样做。

  2. 您正尝试在ResizableBox 上调用该方法(它不是静态方法,因此它无法找到它)。您需要在您创建的对象上调用该方法(即resizeBox)。

  3. 希望这能解决你的问题。

    * EDIT1:你说它运行正常,直到你用这段代码移动到框架"。是"这个代码"你在问题中写的代码?或者它是另一段代码?

    * EDIT2:哦,我讨厌远程调试...尝试添加this.addChild(resizeBox);并删除resizeBox.startResize(null);行(或只是发表评论)

    * EDIT3:我想你可能在那里做错了什么。你能发布goSettings方法的代码吗?

    * EDIT4:所以您发布的初始代码来自第6帧。您可以发布该帧中的整个代码吗?

答案 1 :(得分:0)

startResize方法设为ResizableBox公开..

public function startResize(e:MouseEvent):void{

然后在fla文件中,从对象中调用方法..

var resizeBox:ResizableBox = new ResizableBox();

resizeBox.startResize(null);