0

我一直在创建一个超媒体播放器,我已经到了一个它出现故障的阶段,它显然是一个......

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at AvalancheCityHypermediaPlayer_fla::MainTimeline/fl_CustomMouseCursor()

这是我的代码:

import flash.events.Event;

cust_cursor.mouseEnabled= false;

cust_cursor.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor);

function fl_CustomMouseCursor(event:Event)

{

    cust_cursor.x = stage.mouseX;

    cust_cursor.y = stage.mouseY;
}

Mouse.hide();

我不确定为什么它不能正常工作,基本上当一个按钮悬停在它上面时,它意味着跳转到第 2 帧并停止,但它正在跳转到该帧,然后直接跳转到第 1 帧而不在第 2 帧停止,并停在第 1 帧。

4

1 回答 1

0

1. 您的错误没有产生行号。您(和我)会发现这对于调试非常宝贵;如果在 Flash IDE 中,您可以在 swf 首选项下的“发布设置”中将其打开,作为标题为“允许调试”的切换。

2. 此代码是在类中还是在文档代码中(例如,Flash IDE“操作”选项卡)?如果它在类中,请确保将阶段的引用传递给类的构造函数并将其分配给内部持久变量,以便 fl_CustomMouseCursor 可以解决它。默认情况下,类没有引用舞台的内部方式,我假设这就是产生 #1009 错误的原因。

例如,在您的类构造函数中......

package com.example {
    public class MyClass {
        private var stage;
        public function MyClass(arg) {
            stage = arg;
        }
    }
}

在实例化类时在外面......

var myObj:MyClass = new MyClass(stage);

3. 如果您希望您的代码停在一个框架上,请使用stop();gotoAndStop()

4. 最后,如果您使用 Flash IDE 进行编译,您可以对其进行调试,并准确查看堆栈中运行时环境存在问题的变量。您可以从调试菜单或通过编译来访问它control-shift-enter

于 2012-05-16T17:49:23.037 回答