【问题标题】:Loading object to stage with AS3使用 AS3 将对象加载到舞台
【发布时间】:2010-11-17 08:57:42
【问题描述】:

我是 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");

        }
    }       
}

我没有收到任何错误,而且跟踪命令也不起作用,我的图像也没有出现在舞台上。任何帮助将不胜感激。我花了太长时间试图弄清楚这一点,但我一无所获。

谢谢!

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    对于初学者,您应该尝试阅读更多关于类的作用的信息。您的代码中有几个错误:

    1. 您实际上正在那里进行堆栈溢出。这很有趣,因为这个网站的名字。 :)

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

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

    2. 如果您的班级未添加到舞台,您将无法拨打stage
    3. 类的实例无法将自身添加到阶段。
    4. 您必须将代码分成类中的代码和第一个关键帧中的代码。

    考虑到您有一个空电影,其中包含一个名为“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
            }
        }
    }
    

    【讨论】:

    • 非常感谢,这行得通!耶。我确实解释过我才刚刚开始。我是一名设计师,所以这一切对我来说都很陌生。我认为最好的学习方法是尝试并实际使用我所知道的一点点......他们说什么......关于一点点知识的东西? ;-) 再次感谢。
    • 如果您是编程新手,请先尝试了解面向对象编程 (OOP) 的原理。尝试学习基础知识:类、实例、方法、属性、继承、命名空间等。祝你好运!
    • 顺便说一句,如果有帮助,请将我的答案标记为已接受。这就是本网站的工作方式。 :)
    • 一个小修正“3.一个类的实例不能自己添加到舞台”。这可以很容易地完成,但正如您所写的,默认情况下它在实际上台之前没有对 stage 的引用。但是你可以在构造函数或其他方法调用中给它一个引用。
    • 好点。如果你将引用传递给舞台,那么你可以调用 addChild,因为该方法是公共的。
    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2016-06-23
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多