AS3 ActionScript 3 - 使用计时器实例化对象?

时间:2011-07-25 22:37:13

标签: actionscript-3 flash-cs5

我正在制作一个垂直(不断)滚动的射击游戏&我试图基于计时器实例化对象。例如:在30秒时,放置建筑物@ x,y。

我的问题是,“建筑物”在游戏开始时被实例化,然后在30秒标记处再次实例化 - 而不仅仅是@ 30秒标记。

如果有人能指引我走向正确的方向,我们将不胜感激。

package com.gamecherry.gunslinger
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class  ObjectPlacer extends MovieClip
{
    private var Build01Timer:Timer;

    private var canPlace:Boolean = true;
    private var stageRef:Stage;
    private var startX:Number;
    private var startY:Number;
    private var time:int = 5000;

    public function ObjectPlacer(stageRef:Stage) : void
    {
        this.stageRef = stageRef;


    var Build01Timer = new Timer(time, 1);
    Build01Timer.addEventListener(TimerEvent.TIMER, placeTimerHandler, false, 0, true);
        addEventListener(Event.ENTER_FRAME, loop, false, 0, true);

        Build01Timer.start();



    }


    private function loop(e:Event): void
    {

        if (canPlace)
        {
        var BuildingsLeft01:BuildingsLeft = new BuildingsLeft(stage, 720, -540);    
        BuildingsLeft01.scaleX = -1;
        stageRef.addChildAt((BuildingsLeft01), 2);

        canPlace = false;


        }
    }


    private function placeTimerHandler(e: TimerEvent) : void
    {
        canPlace = true;
    }


    private function removeSelf() : void
    {
        removeEventListener(Event.ENTER_FRAME, loop);

        if (stageRef.contains(this))
        stageRef.removeChild(this); 
    }   


}

}

我哪里错了?

感谢您的关注。

1 个答案:

答案 0 :(得分:0)

这是你班上的第一个:

public class  ObjectPlacer extends MovieClip
{
private var Build01Timer:Timer;

**private var canPlace:Boolean = true;**

您在开始时将其设置为TRUE,将其设置为false,这样可以解决您的问题:)