2017-11-11 241 views
-1

我在我的fla文件中创建了一个符号(MovieClip)并将其添加到帧中。然后我给它的实例名称在属性面板:“myMC”我无法控制从AS3级文件舞台中的MovieClip

然后试图从我的类文件控制它在目录:ROOT \测试\ 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,而不是从库中调用它。

回答

2

首先,总是张贴您的问题得到的ErrorMessages。使事情变得更容易。

但是,现在让我们来看看你的脚本:

我在FLA文件中创建一个符号(影片剪辑),并把它添加到 框架。使用 addChild(myMC);

如果你把它在舞台上,并给了影片剪辑的实例名称没有必要打电话的addChild然后,添加它作为一个孩子。

as3使用大写字母来启动类名非常方便,所以不用myClass,而是将其称为MyClass。

您的软件包缺少构造函数,函数的名称必须与类的名称和.as文件名相同。

getChildByName()方法需要一个字符串,所以你必须在报价

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 
    } 

} 
+0

我想你说什么来包装myMc它拿出另一个问题。编辑该职位的详细信息。 – theRaggedyMan

+0

好吧,我以为你使用MyClass.as作为你的fla的文档类。你究竟想要达到什么目的以及MyClass的目的是什么? @theRaggedyMan – Patang

+0

我想用MyClass控制场景中的动画片段。我有一个复杂的游戏,有很多movieclip init。我曾经从fla文件控制它们,但代码在时间上变得混乱,所以我想用类来分离我的代码。 – theRaggedyMan