在小球上面按下鼠标拖动小球,快速移动过程中松开鼠标,可以将小球抛出。
demo:
代码:
package {
import flash.display.MovieClip;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
public class Main extends MovieClip {
public function Main() {
// constructor code
graphics.lineStyle(2, 0xff0000, 1.0);
graphics.drawRect(50, 50, 700, 500);
var ball:Sprite = new Sprite();
ball.graphics.beginFill(0x00ff00);
ball.graphics.drawCircle(0, 0, 20);
ball.graphics.endFill();
addChild(ball);
ball.x = 100; ball.y = 100;
ball.buttonMode = true;
var gravity:Number = 1.0;
var isDown:Boolean = false;
var isSleep:Boolean = false;
var offsetX:Number;
var offsetY:Number;
var speedX:Number=0;
var speedY:Number = 0;
var acaleX:Number = 0;
var acaleY:Number=0;
ball.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function mouseDownHandler(e:MouseEvent):void {
isDown = true;
offsetX = mouseX - ball.x;
offsetY = mouseY - ball.y;
isSleep = false;
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
stage.addEventListener(Event.MOUSE_LEAVE, mouseUpHandler);
}
function mouseMoveHandler(e:MouseEvent):void {
//speedX += (mouseX - ball.x-offsetX);
//speedY += (mouseY - ball.y-offsetY);
isSleep = false;
}
function mouseUpHandler(e:Event):void {
isDown = false;
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
stage.removeEventListener(Event.MOUSE_LEAVE, mouseUpHandler);
}
function enterFrameHandler(e:Event):void {
if (isSleep) {
return;
}
if (isDown) {
var a:Number = mouseX - ball.x;
var b:Number = mouseY - ball.y;
var k:Number = .1;
speedX +=(a-speedX-k*a)*k;
speedY +=(b-speedY-k*b)*k;
}
speedY += gravity;
ball.x += (speedX*=0.99);
ball.y += (speedY*=0.99);
if (ball.x730) {
ball.x = 730;
speedX *= -1;
}
if (ball.y530) {
ball.y = 530;
speedY *= -1;
}
if (Math.abs(ball.y-530)<0.5&&Math.abs(speedX) < 0.5 && Math.abs(speedY) < 0.5) {
speedX = speedY = 0;
isSleep = true;
}
}
}
}
}
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。