Colorful Oyster
アカウント作った物のずっと放置だったので試しに投稿。
別な物を作ってる途中で何となくやってみた
curveToなんて使わなくてもこれ自体をやるにはもっとスマートなやり方はある。
//アカウント作った物のずっと放置だったので試しに投稿。
//別な物を作ってる途中で何となくやってみた
//curveToなんて使わなくてもこれ自体をやるにはもっとスマートなやり方はある。
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
public class WoolMaker extends Sprite
{
private var main:wool;
private var loc1:*;
private var loc2:*;
private var loc3:*;
//woolと言いつつwoolっぽくないですごめんなさい。
public function WoolMaker()
{
init();
}
//初期化
private function init():void
{
loc1 = new BitmapData(465,465,true,0x00FFFFFF);
loc2 = new Bitmap(loc1);
main = new wool(220,loc1);
for(var i:int =0; i < 465 / 5; i++)
{
loc3 = Math.random() * 0xFFFFFF;
main.generate(i * 5,loc3);
}
addChild(loc2);
}
}
}
import flash.display.BitmapData;
import flash.display.Sprite;
class wool extends Sprite
{
private var ptNum:int;
private var ptVect:Vector.<woolPt>;
private var bmd:BitmapData;
private var endPt:woolPt;
private var loc1:*;
private var loc2:*;
public function wool(_ptNum:int,_bmd:BitmapData)
{
ptNum = _ptNum;
ptVect = new Vector.<woolPt>(_ptNum,true);
bmd = _bmd;
}
public function generate(pos:Number,col:uint):void
{
for(var i:int = 0; i < ptNum; i++)
{
loc1 = i * (465 / ptNum);
ptVect[i] = new woolPt(Math.random() * 465,loc1);
}
endPt = new woolPt(Math.random() * 465,465);
ptVect[ptNum-1] = endPt;
draw(col);
}
public function draw(col:uint):void
{
var sp:Sprite = new Sprite();
sp.graphics.clear();
sp.graphics.lineStyle(1,col,0.7);
sp.graphics.moveTo(ptVect[0].x,ptVect[0].y);
for(var i:int = 1; i < ptNum -1; i++)
{
loc1 = ptVect[i].x * 2 - (ptVect[i - 1].x + ptVect[i + 1].x) / 2;
loc2 = ptVect[i].y * 2 - (ptVect[i - 1].y + ptVect[i + 1].y) / 2;
sp.graphics.curveTo(loc1,loc2,ptVect[i+1].x,ptVect[i+1].y)
}
bmd.draw(sp);
}
}
class woolPt
{
public var x:Number;
public var y:Number;
public function woolPt(_x:Number,_y:Number)
{
x = _x;
y = _y;
}
}