forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: flash on 2010-1-13
♥0 |
Line 65 |
Modified 2010-03-28 03:14:38 |
MIT License
archived:2017-03-20 12:11:14
ActionScript3 source code
/**
* Copyright Tamanegi_kenshi ( http://wonderfl.net/user/Tamanegi_kenshi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/3Ofh
*/
package{
import flash.display.Sprite;
import flash.events.Event;
public class test extends Sprite{
private var ball:Ball;
private var line:Sprite;
private var gravity:Number=0.5;
private var bounce:Number=-0.6;
public function test(){
init();
}
private function init():void{
ball=new Ball();
addChild(ball);
ball.x=100;
ball.y=100;
line=new Sprite();
line.graphics.lineStyle(1);
line.graphics.lineTo(300,0);
addChild(line);
line.rotation=30;
line.x=50;
line.y=200;
addEventListener(Event.ENTER_FRAME,onEnter);
}
private function onEnter(e:Event):void{
ball.vy+=gravity;
ball.x+=ball.vx;
ball.y+=ball.vy;
var angle:Number=line.rotation*Math.PI/180;
var cos:Number=Math.cos(angle);
var sin:Number=Math.sin(angle);
var x1:Number=ball.x-line.x;
var y1:Number=ball.y-line.y;
var x2:Number=cos*x1+sin*y1;
var y2:Number=cos*y1-sin*x1;
var vx1:Number=cos*ball.vx+sin*ball.vy;
var vy1:Number=cos*ball.vy-sin*ball.vx;
if(y2>-ball.height/2){
y2=-ball.height/2;
vy1*=bounce;
}
x1=cos*x2-sin*y2;
y1=cos*y2+sin*x2;
ball.vx=cos*vx1-sin*vy1;
ball.vy=cos*vy1+sin*vx1;
ball.x=line.x+x1;
ball.y=line.y+y1;
}
}
}
import flash.display.Sprite;
class Ball extends Sprite{
public var radias:uint;
public var color:uint;
public var vx:Number=0;
public var vy:Number=0;
function Ball(radias:uint=20,color:uint=0x00000){
this.color=color;
this.radias=radias;
graphics.beginFill(color);
graphics.drawCircle(0,0,radias);
graphics.endFill();
}
}