LikeQuadraticFunction
♥0 |
Line 48 |
Modified 2014-04-15 17:46:30 |
MIT License
archived:2017-03-20 06:44:50
ActionScript3 source code
/**
* Copyright okoi ( http://wonderfl.net/user/okoi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/yjI1
*/
package
{
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
[SWF(width = "465", height = "465", frameRate = "60")]
/**
* 二次関数のような放物線の見え方を作る
* オブジェクトを動かす時の制御とかで使うかんじ
* @author okoi
*/
public class Main extends Sprite
{
public static const WIDTH:Number = 465;
public static const HEIGHT:Number = 465;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var g:Graphics = this.graphics;
g.beginFill(0);
g.drawRect(0, 0, WIDTH, HEIGHT);
g.endFill();
drawParabola( 10, HEIGHT, 0xFFFFFF );
drawParabola( 10, HEIGHT / 2, 0xFFFFFF );
drawParabola( 20, HEIGHT, 0xFF0000 );
drawParabola( 20, HEIGHT / 2, 0xFF0000 );
drawParabola( 30, HEIGHT, 0x00FF00 );
drawParabola( 30, HEIGHT / 2, 0x00FF00 );
drawParabola( 40, HEIGHT, 0x5555FF );
drawParabola( 40, HEIGHT / 2, 0x5555FF );
}
public function calc( currentFrame:int, maxFrame:int, maxValue:Number ) : Number
{
var a:Number = (maxFrame * maxFrame) / maxValue;
return (currentFrame * currentFrame) / a;
}
public function drawParabola( maxFrame:int, maxValue:Number, color:Number ) : void
{
var g:Graphics = this.graphics;
g.lineStyle( 1, color );
g.moveTo( 0, 0 );
for ( var i:int = 0; i <= maxFrame; i++ ) {
var value:Number = calc( i, maxFrame, maxValue );
g.lineTo( 10 * i, HEIGHT - value );
}
}
}
}