我在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,而不是从库中调用它。
答案 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
}
}