使用AS3将对象加载到舞台

时间:2009-08-06 14:19:46

标签: flash actionscript-3

我是AS3的新手所以请原谅我提出一些可能很容易解决的问题。

我正在尝试使用外部AS3类将图像加载到舞台上。我不确定这是否是最好的方法,但我从一个教程开始,所以跟着它。

我的对象(movieclip)有“Mountain”类,被称为“Mountain_mc”。

我的外部AS3类文件被称为'Mountain',这是代码(它存储在与Flash文件相同的项目文件夹级别,我试图将图像加载到舞台上) -

package 
{
    import flash.display.MovieClip;
    import flash.display.Stage;

    public class Mountain extends MovieClip
    {
        public function Mountain()
        {

            var myMountain:Mountain = new Mountain();
            stage.addChild(myMountain);
            myMountain.x = stage.stageWidth/2;
            myMountain.y = stage.stageHeight/2;
            trace ("I am a mountain");

        }
    }       
}

我没有得到任何错误,但是跟踪命令也不起作用,我的图像没有出现在舞台上。非常感谢任何帮助。我花了很长时间试图解决这个问题而且我无处可去。

谢谢!

1 个答案:

答案 0 :(得分:5)

对于初学者,你应该尝试阅读更多关于课程的内容。你的代码中有几个错误:

  1. 你实际上是在堆栈溢出。这很有趣,因为这个网站的名称。 :)

    您以递归方式定义与父级相同类型的变量。 当你创建第一个myMountain时,它将调用它的构造函数。在其中,它将创建一个变量myMountain,它也将调用它的构造函数。等等。

    因此,var myMountain:Mountain = new Mountain();以下的代码行不会出现。如果需要,您可以尝试在该行之前移动trace。如果你编译它,你会得到无数的“我是一座山”。

  2. 如果您的课程未加入舞台,则无法致电stage
  3. 类的实例无法将自身添加到舞台。
  4. 您必须将代码分成您班级中的代码和第一个关键帧中的代码。
  5. 考虑到你有一个空的电影,有一个名为“mountain_mc”的库符号,它指向一个名为Mountain的类,你必须在电影的文件夹中有一个外部文件Mountain.as。然后,您有两种类型的代码

    在电影的第一帧

    上,打开“动作”面板,然后编写:

    var myMountain:Mountain = new Mountain();
    this.addChild(myMountain);
    myMountain.x = stage.stageWidth/2;
    myMountain.y = stage.stageHeight/2;
    

    在您的外部文件Mountain.as中,您有:

    package {
        import flash.display.MovieClip;
        import flash.display.Stage;
        public class Mountain extends MovieClip
        {
            public function Mountain()
            {
                trace ("I am a mountain");
                // do something else
            }
        }
    }