我无法在AS3类文件的舞台上控制MovieClip

时间:2017-11-11 12:33:16

标签: class actionscript-3 flash movieclip

我在fla文件中创建了一个符号(MovieClip)并将其添加到框架中。然后我在属性面板上给它实例名称:“myMC”

然后尝试从目录中的类文件中控制它:root \ Test \ MyClass.as

package Test {
    import flash.display.MovieClip;

    public class MyClass extends MovieClip{
        public function MyClass() {
            var myMC:MovieClip = getChildByName("myMC") as MovieClip;
            myMC.gotoAndStop(2);
        }
    }
}

之后,将类导入fla并尝试运行:

import Test.MyClass;
var LaunchMyClass:MyClass = new MyClass();

并收到此错误,

TypeError: Error #1009: Cannot access a property or method of a null object reference.

at Test::MyClass()
at Test_fla::MainTimeline/frame1()

请注意,我正在尝试控制舞台中已有的MovieClip,而不是从库中调用它。

1 个答案:

答案 0 :(得分:2)

首先,请始终发布您的问题所带来的错误消息。让事情变得更容易。

但现在让我们来看看你的剧本:

  

我在我的fla文件中创建了一个符号(MovieClip)并将其添加到   帧。然后我把它作为一个孩子添加使用   addChild(myMC);

如果你把它放在舞台上并给MovieClip一个实例名,就不需要调用addChild。

在as3中,用大写字母开始类名是很方便的,所以不要使用myClass,而是将其命名为MyClass。

你的包缺少构造函数,函数的名称必须与类的名称相同。 name和.as filename。

getChildByName()方法需要一个String,因此必须将myMc括在引号中

package  {
    import flash.display.MovieClip;


    public class MyClass extends MovieClip {

        // Constructor
        public function MyClass() {
            // constructor code
            var myMC:MovieClip = getChildByName("myMC") as MovieClip;
            myMC.gotoAndStop(2);
        }
        // End Constructor
    }

}