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

时间:2016-06-06 20:22:14

标签: actionscript-3 if-statement flashdevelop

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

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);
            }

        }


    }

}

的MainMenu

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);
        }


    }

}

1 个答案:

答案 0 :(得分:1)

问题是你的代码是在World类构造函数中。 Flashpunk对游戏对象的想法是将实体添加到Worlds中。添加后,World会在每个帧中运行update()方法,在该方法中,它也会运行每个实体的update()。你的if语句在构造函数中总是会产生错误,因为还没有执行更新。

如果我理解正确,您希望在用户按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);
        }
    }