if 语句不检查变量的数量是否增加

An if statement isn't checking if a variable has increased in amount or not

我正在 Flash 开发中使用 AS3 编程。我正在使用一个名为 flashpunk 的程序,它为 类 添加了多个预设,我可以使用它们来简化编程。我有一个 if 语句,它应该在变量等于 1 时添加一个新图形。如果用户在键盘上按下一个,那么该变量确实会增加 1。但是当变量增加 1 并且 if 语句应该检查如果它是一个,它也不会像预期的那样添加新图形。我确实有 if 语句和不同 类 中的变量,我不确定我是否可以这样做,这是代码。不起作用的 if 语句是应该添加新背景的语句1。

章节

package 
{
    import net.flashpunk.Entity;
    import net.flashpunk.World;
    import net.flashpunk.utils.Input;
    import net.flashpunk.utils.Key;

    public class Chapter extends World
    {
        public var mainmenu:MainMenu;

        public var background1:Background1;

        public function Chapter() 
        {
            mainmenu = new MainMenu();

            add(mainmenu);

            background1 = new Background1();

            if(mainmenu.YesNo == 1)
            {
                add(background1);
            }

        }


    }

}

主菜单

package 
{
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import net.flashpunk.Entity;
    import net.flashpunk.graphics.Image;
    import net.flashpunk.utils.Input;
    import net.flashpunk.utils.Key;
    import net.flashpunk.FP;


    public class MainMenu extends Entity
    {
        [Embed(source = "net/MainScreen.png")]
        private const SPRITE1:Class;

        public var YesNo:int = 0

        private var sprite1:Image = new Image(SPRITE1);

        public function MainMenu() 
        {
            graphic = sprite1;
            sprite1.centerOrigin();

            x = 200
            y = 150

            layer = 150

        }


        override public function update():void
        {
            if (Input.pressed(Key.DIGIT_1))
            {
                YesNo = YesNo + 1;

            }
            trace(YesNo);
        }


    }

}

问题是您的代码在 World class 构造函数中。 Flashpunk 的游戏对象理念是将实体添加到世界中。添加后,World 会在每一帧运行 update() 方法,同时它也会运行每个 Entity 的 update() 方法。您在构造函数中的 if 语句将始终产生 false,因为尚未执行更新。

如果我理解正确的话,你想在用户按下 1 后添加背景实体。你可以这样做:

    // in MainMenu class
    override public function update():void
    {
        if (Input.pressed(Key.DIGIT_1))
        {
            world.add(new Background1());
        }
    }

如果您想保留对该实体的引用,您可以:

   override public function update():void
    {
        if (Input.pressed(Key.DIGIT_1))
        {
            Chapter(world).background1 = new Background1(); // note the casting of World to Chapter
            world.add(Chapter(world).background1);
        }
    }