Actionscript 3 要在屏幕上反弹的对象?
我想让5个“汉堡”物体在屏幕上反弹,这样它们就更难拍摄了,这也是我游戏的目标。但是,到目前为止,他们只是排在舞台的顶端,所以这太容易了。我是否需要创建5个单独的对象和5个单独的实例名等 这就是我到目前为止所做的:Actionscript 3 要在屏幕上反弹的对象?,actionscript-3,flash,actionscript,pong,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(e
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;
}
}
}
var触发:布尔值=false;
变量bullet:Bullet1=新的Bullet1();
stage.addEventListener(KeyboardEvent.KEY_DOWN,keydown);
功能键关闭(事件:KeyboardEvent):无效{
开关(event.keyCode){
case键盘。左:
ball.x-=10;
打破
case KEYBORD.SPACE:
如果(!开火){
火();
}
打破
case.RIGHT:
球x+=10;
打破
case Keyboard.UP:
ball.y-=10;
打破
case Keyboard.DOWN:
球y+=10;
打破
违约:
打破
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,keydown);
函数fire(){
addChild(子弹);
发射=真;
bullet.x=ball.x;
bullet.y=ball.y-60
;
}
addEventListener(Event.ENTER_FRAME,movestuff);
函数movestuff(事件:事件):void{
如果(发射){
bullet.y-=20;
如果(项目符号y<0){
发射=假;
移除儿童(子弹);
}
}
}
var Numberger:数字=5;
变量数组:数组=新数组();
对于(var i:uint=0;iNo),如果使用循环为每个汉堡创建随机的x和y位置,则不必单独创建每个电影剪辑。还可以使用Math.random()为每个汉堡提供随机的速度和方向。在下面的代码中,这些值保存在“方向”中数组。此代码创建五个“Burger”类电影剪辑,并将它们放置在屏幕上的随机点上。此代码还为每个电影剪辑创建随机速度和方向:
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];
}
}
导入flash.events.Event;
函数查找_随机(最大值、最小值){
返回Math.round(min+(max-min)*Math.random());
}
变量ary:Array=[];
变量方向:数组=[];
对于(var i:uint=0;iWell,你是在要求有人为你编写整个项目。我不打算这么做,但我可以向你指出一个示例项目,它是这样做的:我没有意识到这是一项如此巨大的工作。感谢你的帮助!实际上,该示例使用了“现实”物理,因此该项目对你来说可能有点过分,但你可能会发现一些有用的代码无电台