【问题标题】:creating movie clip instance using class in ActionScript3使用 ActionScript3 中的类创建影片剪辑实例
【发布时间】:2014-02-05 06:19:36
【问题描述】:

首先我想说的是,我只有几个小时的 AS3 经验。

现在,我有 2 个 .as 文件,其中一个是 main.as,第二个是 Ship_.as

main.as:

package{
    import flash .display.*;
   // import Enemy;
    public class main extends MovieClip{
        public function main(){
    var hero:Ship_=new Ship_();
    addChild(hero); // I have to use addChild here also.
        }

    }
}

Ship_.as 是这样的:

package{
    import flash .display.*;

    public class Ship_ extends MovieClip{
        private var myHero:Ship=new Ship(); // moved inside of class definition

        public function Ship_(){
            addChild(myHero);  // I think I added my movie clip into stage by this.
        }
    }
}

这是我的 Ship 影片剪辑:http://prntscr.com/2pjzdwv

当我测试它时,我收到一个错误,上面写着“1013: The private attribute may be used only on class property definitions.

如果我将 private var myHero:Ship=new Ship(); 更改为 public var myHero:Ship=new Ship(); 我会收到 1180: Call to a possibly undefined method addChild. 错误。有没有人可以帮助我?

编辑

为了能够在屏幕上看到空间电影剪辑,我必须使用两个 addChild() 方法作为我在代码中的注释,尽管我认为 Ship_ 构造函数中的一个就足够了。你能解释一下为什么我也应该使用addChild(hero);

【问题讨论】:

  • @Panzercrisis 为您提供了适当的解决方案。关于问题why should I also use addChild(hero);。这是因为创建新的 Sprite/MovieClip 不会将其添加到显示列表中。为此,您需要使用addChild。您正在 Ship_ 类中执行此操作,您正在创建对象并添加它。但是在main 类中,如果你只是创建new Ship 而没有添加它,为什么你应该看到它?

标签: actionscript-3 flash oop


【解决方案1】:
package{
    import flash .display.*;

    public class Ship_ extends MovieClip{
        private var myHero:Ship=new Ship(); // moved inside of class definition

        public function Ship_(){
            addChild(myHero); // moved inside of contructor
        }
    }
}

当您在Ship_ 中调用addChild() 时,它会将myHero 添加到Ship_ 的实例中。但是Ship_' 在哪里?此时,它只是Main.main()内部的一个变量,但它并没有被添加或任何东西。

所以你所拥有的很像三个盒子,A、B 和 C。起初它们都是分开布置的,没有一个在另一个里面。但是然后你把盒子 C 放到盒子 B 中。但是现在你只有 C 在 B 里面,而 A 仍然自己关闭。所以要完成这个过程,你必须把盒子 B 放到盒子 A 里,因为 C 已经在 B 里面了,这会使得 C 最终在 A 里面。

【讨论】:

  • 我已经编辑了我的问题,你能看看吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多