ThrowBall



package
{
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.events.MouseEvent;
import flash.events.Event;

public class ThrowBall extends Sprite
{
private var radius : int = 15;
private var rect : Rectangle = new Rectangle(0+radius, 0+radius, 800-radius, 500-radius);
private var ball : Sprite;
private var currentX:Number;
private var currentY:Number;
private var lastX:Number;
private var lastY:Number;
private var drag :Boolean = false;
private var vx : Number = 0;
private var vy : Number = 0;
private var tempWall : Sprite;

public function ThrowBall()
{
createBall();
createWall();
stage.addEventListener(Event.ENTER_FRAME, onenterframe);
stage.addEventListener(MouseEvent.MOUSE_UP, onmouseup);
}
private function createBall() :void {
ball = new Sprite();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, radius);
ball.graphics.endFill();
ball.buttonMode = true;
ball.x = rect.width / 2 + radius/2;
ball.y = rect.height / 2 + radius/2;
ball.addEventListener(MouseEvent.MOUSE_DOWN, onmousedown);
addChild(ball);
}
private function onmousedown (e:MouseEvent):void {
ball.startDrag(false, rect);
drag = true;
}
private function onmouseup(e:MouseEvent):void {
ball.stopDrag();
drag = false;
}
private function onenterframe(e:Event):void {
if (drag) {
lastX = currentX;
lastY = currentY;
currentX = mouseX;
currentY = mouseY;
vx = currentX - lastX;
vy = currentY - lastY;
}
else {
ball.x += vx;
ball.y += vy;
}
if (ball.x <= rect.x+radius)
{
ball.x = rect.x+radius;
vx *= -1;
}
else if (ball.x >= rect.width-radius)
{
ball.x = rect.width-radius;
vx *= -1;
}
else if (ball.y >= rect.height-radius)
{
ball.y = rect.height - radius;
vy *= -1;
}
else if (ball.y <=rect.y+radius)
{
ball.y = rect.y+radius;
vy *= -1;
}
vx *= 0.95;
vy *= 0.95;
}
private function createWall():void {
for (var i = 0; i < 2; i++)
{
var wall :Sprite = new Sprite ();
wall.graphics.beginFill(0xFF0000);
wall.graphics.drawRect(0, 0, 800, radius);
wall.graphics.endFill();
if ( i == 1 ) wall.y = 500 - radius;
addChild(wall);
}
for (var j = 0; j < 2; j++)
{
var sideWall :Sprite = new Sprite();
sideWall.graphics.beginFill(0xFF0000);
sideWall.graphics.drawRect(0, 0, radius, 500);
sideWall.graphics.endFill();
if ( j == 1 ) sideWall.x = 800 - radius;
addChild(sideWall);
}
}
}
}

0 Comments:

Post a Comment

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More