2011-07-25 10 views
0

私は、垂直(常に)スクロールシューティングゲームを&にして、タイマーに基づいてオブジェクトをインスタンス化しようとしています。例:30秒で、@ x、yの建物を配置します。AS3 ActionScript 3 - タイマーでオブジェクトをインスタンス化するには?

私の問題は、ゲームの開始時に「建物」がインスタンス化され、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); 
    } 


} 

}

ありがとうございます。ここで

答えて

0

は、あなたのクラスの最初のです:

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

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

あなたはfalseに設定し、開始時にTRUEにそれを設定している、そしてそれはあなたの問題を解決するだろう:)

+0

D'OH!それを指摘してくれてありがとう。愚かな感じは、不満を感じるよりはるかに良いです。 – GameCherry

+0

これは、宣言時に何かに変数を設定するとよく起こります。私はコンストラクタでfalseに設定します! - また、そのチェックボックスをクリックして、人々があなたが答えを受け入れるのを見ることができるようにしてください:) – RasmusWL