2012-03-26 26 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