物体在屏幕周围反弹?

时间:2013-12-27 12:33:07

标签: actionscript-3 flash actionscript pong

我想让5'汉堡'物体在屏幕周围反弹,这样他们就像我的游戏目标一样难以射击。但是,到目前为止,他们只排在舞台的顶端,所以它太容易上场了。我是否需要使用5个单独的实例名称等创建5个单独的对象。

这是我到目前为止所做的:

var firing:Boolean = false;
var bullet:Bullet1 = new Bullet1();


stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);


function keydown(event:KeyboardEvent):void {
switch(event.keyCode) {
    case Keyboard.LEFT :
    ball.x -= 10;
    break;

    case Keyboard.SPACE :
    if (!firing) {
    fire();
    }
    break;

    case Keyboard.RIGHT :
    ball.x += 10;
    break;

    case Keyboard.UP :
    ball.y -= 10;
    break;

    case Keyboard.DOWN :
    ball.y += 10;
    break;

    default :
    break;
}
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);




function fire() {
addChild(bullet);
firing = true;
bullet.x = ball.x;
bullet.y = ball.y - 60
;
}
addEventListener(Event.ENTER_FRAME, movestuff);
function movestuff(event:Event):void {
if (firing) {
    bullet.y -= 20;
    if (bullet.y < 0) {
        firing = false;
        removeChild(bullet);

}
    }
}

var numBurger:Number = 5;
var array:Array = new Array();
for (var i:uint = 0; i<numBurger; i++) {
var burger:Burger = new Burger();
array.push(burger);
addChild(burger);
burger.x = 100 + 100*i;
burger.y = 50;


}
 addEventListener(Event.ENTER_FRAME, checkCollision);
function checkCollision(event:Event)
{
for (var i:uint=0; i<array.length; i++)
{
 if (array[i].hitTestObject(bullet))

 {

 removeChild(array[i]);
  array.splice(i,1);
 return;
}
}


 }

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

不,如果使用循环为每个汉堡创建随机x和y位置,则不必单独创建每个影片剪辑。您还可以使用Math.random()为每个汉堡提供随机速度和方向。在下面的代码中,这些值保存在“direction_ary”数组中。此代码创建“Burger”类的五个MovieClip,并将它们放置在屏幕上的随机点。该代码还为每个MovieClip创建随机速度和方向:

import flash.events.Event;

function find_random(max,min){
    return Math.round(min+(max-min)*Math.random());
}

var ary:Array = [];
var direction_ary:Array = [];
for(var i:uint=0;i<5;i++){
    ary[i]=new Burger();
    ary[i].name="burger"+(i);
    ary[i].x=find_random(stage.stageWidth-ary[i].width,ary[i].width);
    ary[i].y=find_random(stage.stageHeight-ary[i].height,ary[i].height);
    addChild(ary[i]);
    direction_ary[i]=[find_random(5,-5),find_random(5,-5)];
    for(var e:uint=0;e<100;e++){
        if(direction_ary[i][0]==0||direction_ary[i][1]==0){
            direction_ary[i]=[find_random(5,-5),find_random(5,-5)];
        }else{
            break;
        }
    }
}

stage.addEventListener(Event.ENTER_FRAME,update_burgers);
function update_burgers(e:Event){

    for(var i:uint=0;i<5;i++){
        if (ary[i].x>stage.stageWidth||ary[i].x<0){
            direction_ary[i][0]*=-1;
        }
        if (ary[i].y>stage.stageHeight||ary[i].y<0){
            direction_ary[i][1]*=-1;
        }
        ary[i].x+=direction_ary[i][0];
        ary[i].y+=direction_ary[i][1];
    }



}

代码是相当自我解释的。祝你的项目好运。

干杯, Drake Swartzy