as3检查是否从舞台上删除了一个对象

时间:2018-01-05 15:58:22

标签: actionscript-3

这是我第一次在这个论坛上发帖,所以如果我做错了,请告诉我。我正在尝试用as3制作游戏。在游戏中,您会看到一个代表颜色的单词。当你点击块消失时。问题是如何检查块是否在舞台上。因为虽然我点击块然后删除它,布尔似乎没有变为真。提前致谢

这里是我的所有代码,因此我创建了8个块,其中包含一个单词(代表一种颜色)。而我想要的是,一个randomely创建的单词与块中的那些单词相对应,如果你点击具有正确单词的单词,你就赢了。所以问题主要是关于他被评论出来的作品

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.events.MouseEvent;
    import flash.utils.Timer;
    import flash.events.TimerEvent; 

    [SWF(backgroundColor = "0x000000")]

    public class Main extends Sprite 
    {
        public var blok:blokken = new blokken();
        public var blok2:blokken = new blokken();
        public var blok3:blokken = new blokken();
        public var blok4:blokken = new blokken();
        public var blok5:blokken = new blokken();
        public var blok6:blokken = new blokken();
        public var blok7:blokken = new blokken();
        public var blok8:blokken = new blokken();
        public var kleuren:Array = new Array("rood", "blauw", "geel", "groen");
        public var kleur:int = Math.floor(Math.random() * kleuren.length);
        public var tekstKleur:TextField = new TextField;
        public var grootheidswaanzin:TextFormat = new TextFormat();
        public var aanwezig:Boolean = true;
        public var tijdje:Timer = new Timer(15000,1);
        public var eindTekst:TextField = new TextField;

        public function Main() 
        {
            grootheidswaanzin.size = 25;

            tekstKleur.defaultTextFormat = grootheidswaanzin;
            tekstKleur.text = kleuren[kleur];
            tekstKleur.x = 415;       
            tekstKleur.y = 80;
            tekstKleur.textColor = 0xFFFFFF;
            addChild(tekstKleur);           

            eindTekst.x = 415;
            eindTekst.y = 200;
            eindTekst.textColor = 0xFFFFFF;
            eindTekst.text = "je faalt";
            eindTekst.defaultTextFormat = grootheidswaanzin;

            blok.x = 315;
            blok.y = 150;
            blok.naamTekst("rood");
            addChild(blok);

            blok2.x = 440;
            blok2.y = 150;
            blok2.naamTekst("rood");
            addChild(blok2);

            blok3.x = 315;
            blok3.y = 235;
            blok3.naamTekst("blauw");
            addChild(blok3);

            blok4.x = 440;
            blok4.y = 235;
            blok4.naamTekst("blauw");
            addChild(blok4);

            blok5.x = 315;
            blok5.y = 320;
            blok5.naamTekst("geel");
            addChild(blok5);

            blok6.x = 440;
            blok6.y = 320;
            blok6.naamTekst("geel");
            addChild(blok6);

            blok7.x = 315;
            blok7.y = 405;
            blok7.naamTekst("groen");
            addChild(blok7);

            blok8.x = 440;
            blok8.y = 405;
            blok8.naamTekst("groen");
            addChild(blok8);

            tijdje.addEventListener(TimerEvent.TIMER, vijfSecondenRegel);
            tijdje.start();
            /*if (blok.stage || blok2.stage) 
            {
                aanwezig = false;
            }else 
            {
                aanwezig = true;
                trace (aanwezig);
            }
            trace (aanwezig);

            if (kleuren[kleur] == "rood" && aanwezig == true) 
            {
                trace ("victory");
            }*/
        }

        public function vijfSecondenRegel(e:TimerEvent):void
        {
            removeEventListener(TimerEvent.TIMER,vijfSecondenRegel);

            removeChild(blok);
            removeChild(blok2);
            removeChild(blok3);
            removeChild(blok4);
            removeChild(blok5);
            removeChild(blok6);
            removeChild(blok7);
            removeChild(blok8);
            removeChild(tekstKleur);
            addChild(eindTekst);
        }
    }

}



package 
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.events.MouseEvent;
    import flash.text.TextFormat;

    public class blokken extends Sprite 
    {
        public var blokAchtergrond:Sprite = new Sprite;
        public var tekstInBlok: TextField = new TextField;
        public var TekstGrootte:TextFormat = new TextFormat();


        public function blokken()
        {
            blokAchtergrond.graphics.beginFill(Math.random() * 0xFFFFFF);
            blokAchtergrond.graphics.drawRect(0, 0, 120, 80);
            addChild(blokAchtergrond);

            TekstGrootte.size = 25; 
            tekstInBlok.defaultTextFormat = TekstGrootte;
            tekstInBlok.width = 120;
            tekstInBlok.height = 40;
            tekstInBlok.y = 40;
            tekstInBlok.x = 30;
            addChild(tekstInBlok);

            addEventListener(MouseEvent.MOUSE_DOWN, klikjes);
        }

        public function naamTekst(label:String):void 
        {
            tekstInBlok.text = label;
        }

        public function klikjes(e:MouseEvent):void 
        {
            removeChild(blokAchtergrond);
            removeChild(tekstInBlok);

        }
    }

}

1 个答案:

答案 0 :(得分:0)

您的问题是您在类的构造函数中设置了def keyPressEvent(self, event): if event.key() in (Qt.Key_Backspace, Qt.Key_Delete): self.delete() QDialog.keyPressEvent(self, event) var(它只运行一次,甚至在任何显示树内容都被初始化之前)。因此,如果稍后不再设置var,则值始终为SELECT Sum(IIf(tblEventPersonnel.[System Operator]="Person",1,0)) AS [CountOfSystem Operator], Sum(IIf(tblEventPersonnel.[Test Engineer 1]="Person",1,0)) AS [CountOfTest Engineer 1] FROM tblEventPersonnel;

  

对于boolean var来改变它的值,你必须有代码来更新它

因此,在删除块的同时,您必须更新该布尔值:

aanwezig

也许你想做的行为不是普通变量(如果你想要改变值就必须明确更新),创建一个getter函数:( getters / setters就像一个变量,但是每次访问时都使用函数计算返回值

true

然后当你执行:removeChild(blok); aanwezig = false; //or however you compute the value 时,如果这些对象都不在显示列表中,它将返回true。

此外,它似乎在你的public function get aanwezig():Boolean { return !blok.stage && !blok2.stage } 类中,你只是删除块的子节点,而不是块本身(所以trace(aanwezig)实际上仍然是真的,因为它仍然在显示列表中因为你只删除了它的孩子。)

而不是:

blokken

执行此操作(从父项中删除)

block2.stage