2016-09-06 6 views
0

AS3で、私が教えるHSマルチメディアクラスのレッスンをいくつか設計します。AS3スクリプトが30秒後に停止する場合があります。

私は数年で私のクラスでこれを教えようとしていないので、少し錆びています。私のスクリプトは、私がかなり前に行ったAS2の仕事に基づいているので、できるだけ滑らかではない可能性もあります。

つまり、このわずかなコードは約30秒間実行されてから停止します。エラーはなく、配列の長さを追跡するためにトレースコマンドの外にフィードバックはありません。

これは、子供たちがAS3でいくつかのゲームを書く方向になるためのレッスンシリーズの一部です。ここでは、ランダムタイミングとランダム配置を作成する方法を検討しています。モーション、プロパティ、変数、リスナー、関数については既に説明しました。ここで

コードです:あなたは meteor秒の合計数は、これまでに作成しただけで岩を落とし、あなたのコードで

import flash.events.Event; 

var firstMeteor:Number = 1; 
var timeSinceLast:Number = 0; 
var lastMeteor:Number = 0; 
var totalMeteors = 60; 
var metProp=.08; 
var rocksBox:Array = new Array; 
var dropSpeed:Number = 15; 
var lowLimit:Number = 350; 

stage.addEventListener(Event.ENTER_FRAME,dropRocks); 
stage.addEventListener(Event.ENTER_FRAME,moveRocks); 

function dropRocks(e:Event):void{ 
    if(lastMeteor<totalMeteors) { 
     if(Math.random() < metProp) { 
      lastMeteor++; 
      var rock:meteor = new meteor; 
      addChild(rock); 
      rocksBox.push(rock); 
      rock.x = Math.random()*500; 
      rock.y = 20; 
      timeSinceLast = 0; 
     } 
    } 
    timeSinceLast++; 
} 

function moveRocks(e:Event):void { 
    for(var i:int = rocksBox.length-1; i>=0; i--) { 
     rocksBox[i].y += dropSpeed; 
     if(rocksBox[i].y>lowLimit) { 
      removeChild(rocksBox[i]); 
      rocksBox.splice(i,1); 
      trace(rocksBox.length); 
     } 
    } 
} 

答えて

1

(すなわち:lastMeteor)を、まだの最大量に達していませんあなたが指定したtotalMeteors!それが最大に達したら、if(lastMeteor<totalMeteors)は他の "流星"の創造を起こさせません!!

+0

ありがとうございます!私はトレースを通してすべての変数をチェックして、それが私に何を伝えるかを確認することを覚えておく必要があります。これは貴重なものであり、あなたのご意見に感謝します。 –

関連する問題