【问题标题】:I can't control MovieClip in the stage from AS3 class file我无法从 AS3 类文件控制舞台中的 MovieClip
【发布时间】:2018-04-24 13:49:24
【问题描述】:

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

【问题讨论】:

    标签: class actionscript-3 flash movieclip


    【解决方案1】:

    首先,请务必发布您在问题中收到的错误消息。让事情变得更容易。

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

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

    如果您将它放在舞台上并给 MovieClip 一个 Instancename,则无需调用 addChild。

    在 as3 中,以大写字母开头的类名很方便,因此不要将 myClass 称为 MyClass。

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

    getChildByName() 方法需要一个字符串,因此您必须将 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
        }
    
    }
    

    【讨论】:

    • 我试过你说的,但又出现了另一个问题。编辑帖子以获取详细信息。
    • 好吧,我以为你使用 MyClass.as 作为你的 fla 的文档类。您到底想实现什么,MyClass 的目的是什么? @theRaggedyMan
    • 我正在尝试使用 MyClass 控制场景中的影片剪辑。我有一个包含许多电影剪辑的复杂游戏。我曾经通过 fla 文件控制它们,但代码及时变得混乱,所以我想使用类来分离我的代码。
    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多