2017-06-21 9 views
0

現在、20秒以内にステージにムービークリップを追加する予定のタイマーをまとめていますが、20秒間をカウントする必要がありますその後リセットします。20秒後にタイマがリセットされますが、ランダムに関数を呼び出すAS3

このように、ランダムタイマーのタイマーカウントダウンを最大20秒まで行うことができますが、そのランダムタイマーの直後に繰り返されます。だから私は20000のタイマーの遅れを考えていました - randommath + 20000が作り出したどんな時でも。しかし、私は生産された時間を参照する方法を考えることができません。 誰かがこれを達成する方法を知っている誰ですか?あるいは別の方法の回避策ですか?

ありがとうございます!

var treasureclip:MovieClip= new xClip; 

var treasureTimer = new Timer(Math.random() * 20000); 
treasureTimer.addEventListener("timer", placeTreasure); 
treasureTimer.start(); 

function placeTreasure(evt:TimerEvent):void { 
addChild(treasureclip); 
Timer(evt.currentTarget).delay = 20000 - //something 
} 

答えて

1
import flash.utils.setTimeout; 

var treasureclip:MovieClip= new xClip; 
    /*to check it adds movieClip uncomment this and comment previous 
    var treasureclip:MovieClip= new MovieClip; 
    with(treasureclip.graphics) 
    { 
     beginFill(0); 
     drawRect(0,0,50,50); 
    }*/ 

var timeout:uint; 

startTimeout(); 
setInterval(startTimeout, 20000); 

function startTimeout():void 
{ 
    timeout = setTimeout(placeTreasure, int(20000 * Math.random())); 
} 

function placeTreasure():void { 
    addChild(treasureclip); 
} 

//Don't forget to kill timeout with clearTimeout(timeout) to avoid memory leaks 
+0

私はとても感謝多く、タイムアウト機能を考えていませんでした!しかし、私はエラーがない場合でも、ムービークリップはステージに置かれません。 – ECcoding

+0

また、私はその機能がランダムな瞬間にトリガされていることに気がつきますが、トリガした後、次の20秒以内に再びトリガされます... setTimeoutを使用して20秒後にトリガする方法はありますかそれに続く20秒で20秒間に1回トリガーがかかるでしょうか? – ECcoding

+1

安定した20秒の間隔を作るために投稿を編集しました。あなたのクリップをチェックしないでください - おそらくピボットポイントが間違っているかスムースで、xClipを見ずに言うことはできません。クリップは複製されません。シェルを複製するには、 'addChild(treasureclip = new xClip);' –

関連する問題