0

我正在尝试向舞台添加一个对象。在文档类中,我使用以下代码:

public function StartGame()
{
    gameClass = new GameClass(this);
    this.addChild(gameClass);
}

在游戏中,我想在舞台底部添加一个对象。之后,它应该向上移动,直到它在屏幕之外。我添加了以下代码:

public function GameClass(main:MainClass) {
        this.main = main;
        viruslist = new Array();

        this.addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event):void {
        addVirus(75);
    }

    public function addVirus(xcoor)
    {
        trace("Creating virus");
        var v:Virus = new Virus(this.main, this, xcoor);
        this.addChild(v);
        viruslist.push(v);
    }

然后,在 Virus 类中,我执行以下操作:

public function Virus(main:MainClass, gameKlasse:GameClass, x:Number) {
        this.main = main;
        this.game = gameKlasse;
        this.xcoor = x;
        this.addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event):void {
        this.y = main.height;
        trace("Height: " + y);
        trace("Stage height: " + main.height);
        this.addEventListener(Event.ENTER_FRAME, runTime);
        trace("Virus created");
    }

所以问题是,我的舞台大约是屏幕的高度。但是,病毒几乎被置于顶部。我的日志显示:

创建病毒高度:86 阶段高度:156.5 病毒创建高度:156.5 阶段高度:227 病毒创建

出了什么问题?为什么它会被创建两次?为什么舞台高度会发生变化?为什么我的对象没有出现在我的屏幕底部?

编辑: usingstage.stageHeight给出相同的结果。

4

1 回答 1

1

您正在使用 main.height 和 stage.height,而 main 和 stage 没有任何高度,直到您添加一些东西。因此,一旦添加了病毒,它的高度只会大于零。

您正在寻找的是 stageHeight 属性,它将告诉您可用的高度。您可以通过以下方式在添加到舞台的任何对象中访问它:

stage.stageHeight

祝你好运!

于 2013-03-17T19:41:43.580 回答