flash on 2011-4-4
...
@author
♥0 |
Line 44 |
Modified 2011-04-04 13:59:21 |
MIT License
archived:2017-03-20 06:45:11
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/sIMs
*/
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.display.Graphics;
[SWF(width = "465", height = "465")]
/**
* ...
* @author
*/
public class Main extends Sprite
{
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
graphics.lineStyle(1, 0);
for ( var i:Number = 0; i < 360; i++ )
{
var pos:Point = GetHeartPosition( i / 360, 100 );
if ( i == 0 ) graphics.moveTo( 465 / 2 + pos.x, 465 / 2 + pos.y );
else graphics.lineTo( 465 / 2 + pos.x, 465 / 2 + pos.y );
}
}
/**
*
* @param rate 0 ~ 1
* @param radius
* @return
*/
public function GetHeartPosition( rate:Number, radius:Number ) : Point
{
var min:Number = 10;
var max:Number = 130;
var length:Number = (max - min) * 2;
var half:Number = length / 2;
var y:Number;
if ( rate > 0.5 )
{
y = Math.sin( (length * (1-rate)) * Math.PI / 180 ) * radius * -1;
}else
{
y = Math.sin( (length * rate) * Math.PI / 180 ) * radius * -1;
}
var x:Number = -1 * Math.sin( 360 * rate * Math.PI / 180 ) * radius/2;
return new Point(x, y);
}
}
}