【AS3代码】是男人就坚持30秒
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Main extends Sprite
{
private var ballXSpeed:Number = 0; //小球X轴速度
private var ballYSpeed:Number = 0; //小球Y轴速度
private var starNum:int = 10; //星星数量
private var starArray:Array; //保存星星的数组
private var ball:mcBall;
public function Main()
{
init();
}
private function init():void
{
starArray = new Array();
ball = new mcBall();
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
this.addChild(ball);
//放置小星星
for(var i:int = 0; i < starNum; i++)
{
makeStars();
}
//按键改变小球移动速度
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
//球的移动事件
stage.addEventListener(Event.ENTER_FRAME, moveBall);
//小星星的移动事件
stage.addEventListener(Event.ENTER_FRAME, moveStar);
}
private function onKeyDownHandler(evt:KeyboardEvent):void
{
if(evt.keyCode == Keyboard.LEFT)
{
ballXSpeed = -4;
}
else if(evt.keyCode == Keyboard.RIGHT)
{
ballXSpeed = 4;
}
else if(evt.keyCode == Keyboard.UP)
{
ballYSpeed = -4;
}
else if(evt.keyCode == Keyboard.DOWN)
{
ballYSpeed = 4;
}
}
//移动小星星
private function moveStar(evt:Event):void
{
for(var i:uint = 0; i < starArray.length; i++)
{
starArray[i].x += starArray[i].speedX;
starArray[i].y += starArray[i].speedY;
if(starArray[i].x >= stage.stageWidth + 50 || starArray[i].x <= -50 || starArray[i].y >= stage.stageHeight +50 || starArray[i].y <= -50)
{
removeChild(starArray[i]);
starArray.splice(i,1);
i -= 1;
makeStars();
}
}
}
private function onKeyUpHandler(evt:KeyboardEvent):void
{
ballXSpeed = 0;
ballYSpeed = 0;
}
//移动小球
private function moveBall(evt:Event):void
{
ball.x += ballXSpeed;
ball.y += ballYSpeed;
//如果碰到墙壁就反弹,直接改变速度的方向
if(ball.x >= stage.stageWidth - ball.width / 2)
{
ball.x = stage.stageWidth - ball.width / 2 - 0.1;
}
else if(ball.x <= 0)
{
ball.x = 0;
}
else if(ball.y >= stage.stageHeight - ball.height / 2)
{
ball.y = stage.stageHeight - ball.height / 2 - 0.1;
}
else if(ball.y <= 0)
{
ball.y = 0;
}
//判断小球是否和星星碰撞
for(var i:uint = 0; i < starArray.length; i++)
{
if(ball.hitTestObject(starArray[i]))
{
trace("很不幸!你撞到星星了!");
stage.removeEventListener(Event.ENTER_FRAME,moveBall);
stage.removeEventListener(Event.ENTER_FRAME, moveStar);
break;
}
}
}
//放置小星星
private function makeStars():void
{
var star:Star = new Star();
//随机产生星星初始方向(值范围0-3)
var starDirection:int = Math.floor(Math.random() * 4);
var temp:int = Math.floor(Math.random() * 2); //0,1
var xyDirection:int = (temp == 0) ? 1 : -1; //随机获得往x或y方向飞
switch(starDirection)
{
//往下飞
case 0:
star.x = Math.random() * stage.stageWidth;
star.y = 0;
star.speedX = Math.random() * 4 * xyDirection;
star.speedY = Math.random() * 4;
break;
//往上飞
case 1:
star.x = Math.random() * stage.stageWidth;
star.y = stage.stageHeight;
star.speedX = Math.random() * 4 * xyDirection;
star.speedY = -Math.random() * 4;
break;
//往左飞
case 2:
star.x = stage.stageWidth;
star.y = Math.random() * stage.stageHeight;
star.speedX = -Math.random() * 4;
star.speedY = Math.random() * 4 * xyDirection;
break;
//往右飞
case 3:
star.x = 0;
star.y = Math.random() * stage.stageHeight;
star.speedX = Math.random() * 4;
star.speedY = Math.random() * 4 * xyDirection;
break;
}
this.addChild(star);
starArray.push(star);
}
}
}
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Main extends Sprite
{
private var ballXSpeed:Number = 0; //小球X轴速度
private var ballYSpeed:Number = 0; //小球Y轴速度
private var starNum:int = 10; //星星数量
private var starArray:Array; //保存星星的数组
private var ball:mcBall;
public function Main()
{
init();
}
private function init():void
{
starArray = new Array();
ball = new mcBall();
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
this.addChild(ball);
//放置小星星
for(var i:int = 0; i < starNum; i++)
{
makeStars();
}
//按键改变小球移动速度
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
//球的移动事件
stage.addEventListener(Event.ENTER_FRAME, moveBall);
//小星星的移动事件
stage.addEventListener(Event.ENTER_FRAME, moveStar);
}
private function onKeyDownHandler(evt:KeyboardEvent):void
{
if(evt.keyCode == Keyboard.LEFT)
{
ballXSpeed = -4;
}
else if(evt.keyCode == Keyboard.RIGHT)
{
ballXSpeed = 4;
}
else if(evt.keyCode == Keyboard.UP)
{
ballYSpeed = -4;
}
else if(evt.keyCode == Keyboard.DOWN)
{
ballYSpeed = 4;
}
}
//移动小星星
private function moveStar(evt:Event):void
{
for(var i:uint = 0; i < starArray.length; i++)
{
starArray[i].x += starArray[i].speedX;
starArray[i].y += starArray[i].speedY;
if(starArray[i].x >= stage.stageWidth + 50 || starArray[i].x <= -50 || starArray[i].y >= stage.stageHeight +50 || starArray[i].y <= -50)
{
removeChild(starArray[i]);
starArray.splice(i,1);
i -= 1;
makeStars();
}
}
}
private function onKeyUpHandler(evt:KeyboardEvent):void
{
ballXSpeed = 0;
ballYSpeed = 0;
}
//移动小球
private function moveBall(evt:Event):void
{
ball.x += ballXSpeed;
ball.y += ballYSpeed;
//如果碰到墙壁就反弹,直接改变速度的方向
if(ball.x >= stage.stageWidth - ball.width / 2)
{
ball.x = stage.stageWidth - ball.width / 2 - 0.1;
}
else if(ball.x <= 0)
{
ball.x = 0;
}
else if(ball.y >= stage.stageHeight - ball.height / 2)
{
ball.y = stage.stageHeight - ball.height / 2 - 0.1;
}
else if(ball.y <= 0)
{
ball.y = 0;
}
//判断小球是否和星星碰撞
for(var i:uint = 0; i < starArray.length; i++)
{
if(ball.hitTestObject(starArray[i]))
{
trace("很不幸!你撞到星星了!");
stage.removeEventListener(Event.ENTER_FRAME,moveBall);
stage.removeEventListener(Event.ENTER_FRAME, moveStar);
break;
}
}
}
//放置小星星
private function makeStars():void
{
var star:Star = new Star();
//随机产生星星初始方向(值范围0-3)
var starDirection:int = Math.floor(Math.random() * 4);
var temp:int = Math.floor(Math.random() * 2); //0,1
var xyDirection:int = (temp == 0) ? 1 : -1; //随机获得往x或y方向飞
switch(starDirection)
{
//往下飞
case 0:
star.x = Math.random() * stage.stageWidth;
star.y = 0;
star.speedX = Math.random() * 4 * xyDirection;
star.speedY = Math.random() * 4;
break;
//往上飞
case 1:
star.x = Math.random() * stage.stageWidth;
star.y = stage.stageHeight;
star.speedX = Math.random() * 4 * xyDirection;
star.speedY = -Math.random() * 4;
break;
//往左飞
case 2:
star.x = stage.stageWidth;
star.y = Math.random() * stage.stageHeight;
star.speedX = -Math.random() * 4;
star.speedY = Math.random() * 4 * xyDirection;
break;
//往右飞
case 3:
star.x = 0;
star.y = Math.random() * stage.stageHeight;
star.speedX = Math.random() * 4;
star.speedY = Math.random() * 4 * xyDirection;
break;
}
this.addChild(star);
starArray.push(star);
}
}
}