2012-03-26 23 views
0

我在做類似KABOOM遊戲我的ActionScript類的Actionscript - 隨機水平運動刪除對象

http://www.groovz.com/play/kaboom/

我意識到我甚至還沒有接近完成,它可能是低劣的,但是這是我的到目前爲止的代碼:

var bucket:Bucket=new Bucket 
var sun:Sun=new Sun 
var fireBalls:Array=new Array() 
var livesLeft:Array=new Array() 
addChild(bucket) 
addChild(sun) 
sun.x=sun.width/2 
sun.y=50 
bucket.x=bucket.width/2 
bucket.y=stage.stageHeight-50 
bucket.speed=15 

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown) 

function onKeyDown(event:KeyboardEvent){ 
    if (event.keyCode==37&&bucket.x>bucket.width/2){ // left arrow key 
     bucket.x=bucket.x-bucket.speed; 
    } 
    if (event.keyCode==39&&bucket.x<stage.stageWidth-bucket.width/2){ // right arrow key 
     bucket.x=bucket.x+bucket.speed; 
    } 
} 

stage.addEventListener(MouseEvent.MOUSE_MOVE,followBucket); 

function followBucket(event:MouseEvent):void { 
bucket.x=mouseX; 
} 

addEventListener(Event.ENTER_FRAME,onEnterFrame) 

function checkForCollisions(){ 

} 

function onEnterFrame(event:Event){ 
    checkForCollisions.call(); 
    sun.x=sun.x+15; 
    if (fireBalls.length>0&&fireBalls[0].y>stage.stageHeight-20){ // Fireballs exit stage 
     removeChild(fireBalls[0]); 
     fireBalls.shift(); 
    } 
    for (var j:int=0; j<fireBalls.length; j++){ 
     fireBalls[j].y=fireBalls[j].y+15; 
     if (fireBalls[j].y>stage.stageHeight-fireBall.width/2){ 
     } 
    } 
    if (Math.random()>.2){ // Fireballs shooting from Sun 
     var fireBall:FireBall=new FireBall; 
     fireBall.x=sun.x; 
     addChild(fireBall); 
     fireBalls.push(fireBall); 
    } 
    if (sun.x>stage.stageWidth){ // Sun hits right side of stage 
     sun.x=0; 
    } 
    if (sun.x<0){ // Sun hits left side of stage 
     sun.x=stage.stageWidth; 
    } 
} 

我知道我想用一個定時器事件或東西拿到陽光下隨機切換方向,但我不能完全弄清楚,建議?

這是什麼樣的SWF看起來像一個想法(在這一模擬不加載的一切,桶是在舞臺上和左移動,在現實中右的onkeydown):

http://www.shareswf.com/game/24222/kaboom-sun-clone

回答

1

像這樣

import flash.events.TimerEvent; 
import flash.utils.Timer; 
var bucket:Bucket=new Bucket 
var sun:Sun=new Sun 
var fireBalls:Array=new Array() 
var livesLeft:Array = new Array() 
var left:Boolean; 
var timer:Timer = new Timer(1000); // test change direction every second 


addChild(bucket) 
addChild(sun) 
sun.x=sun.width/2 
sun.y=50 
bucket.x=bucket.width/2 
bucket.y=stage.stageHeight-50 
bucket.speed=15 

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown) 

function onTimer(e:TimerEvent) { 
    left = (Math.random() > 0.5);// 50/50 chance of changing direction 
} 


timer.addEventListener(TimerEvent.TIMER, onTimer); 
timer.start(); 

function onKeyDown(event:KeyboardEvent){ 
    if (event.keyCode==37&&bucket.x>bucket.width/2){ // left arrow key 
     bucket.x=bucket.x-bucket.speed; 
    } 
    if (event.keyCode==39&&bucket.x<stage.stageWidth-bucket.width/2){ // right arrow key 
     bucket.x=bucket.x+bucket.speed; 
    } 
} 

stage.addEventListener(MouseEvent.MOUSE_MOVE,followBucket); 

function followBucket(event:MouseEvent):void { 
bucket.x=mouseX; 
} 

addEventListener(Event.ENTER_FRAME,onEnterFrame) 

function checkForCollisions(){ 

} 

function onEnterFrame(event:Event){ 
    checkForCollisions.call(); 
    if (left) { 
     sun.x = sun.x - 15; 
    }else{ 
     sun.x = sun.x + 15; 
    } 
    if (fireBalls.length>0&&fireBalls[0].y>stage.stageHeight-20){ // Fireballs exit stage 
     removeChild(fireBalls[0]); 
     fireBalls.shift(); 
    } 
    for (var j:int=0; j<fireBalls.length; j++){ 
     fireBalls[j].y=fireBalls[j].y+15; 
     if (fireBalls[j].y>stage.stageHeight-fireBall.width/2){ 
     } 
    } 
    if (Math.random()>.2){ // Fireballs shooting from Sun 
     var fireBall:FireBall=new FireBall; 
     fireBall.x=sun.x; 
     addChild(fireBall); 
     fireBalls.push(fireBall); 
    } 
    if (sun.x>stage.stageWidth){ // Sun hits right side of stage 
     sun.x=0; 
    } 
    if (sun.x<0){ // Sun hits left side of stage 
     sun.x=stage.stageWidth; 
    } 
} 
+0

感謝這很好的工作,現在我還有最後一個問題:我怎麼能讓火球更頻繁地掉落?我假設我正在使用Math.random不正確?還是等待1從數組中刪除另一個之前從數組中刪除? – Eratosthenes 2012-03-26 02:30:35

+0

運行鏈接到的swf,我得到一個空引用錯誤。我認爲你的代碼中的其他地方的錯誤會導致腳本崩潰。 – ricick 2012-03-26 02:35:01

+0

雅我認爲空引用是fireBalls數組,我在這裏提出了一個新問題:http://stackoverflow.com/questions/9866132/actionscript-dropping-multiple-objects-using-an-array – Eratosthenes 2012-03-26 03:07:35