flash on 2015-3-15
part2 of
http://wonderfl.net/c/3hXI
♥0 |
Line 92 |
Modified 2015-03-15 08:20:03 |
MIT License
archived:2017-03-30 11:46:57
ActionScript3 source code
/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/aZJ4
*/
package {
import flash.geom.Rectangle;
import flash.display.BitmapData;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
skin = new BitmapData(32,32, true, 0);
skin.fillRect(skin.rect, 0xF0000088);
skin.noise(42);
skin.fillRect(new Rectangle(0,8,32,16), 0xF00000FF);
skin.fillRect(new Rectangle(0,12,32,7), 0xFFFFFFFF);
var i:int; var num:int;
num = vecPnt.length;
for (i =0; i < num; i+=2)
{
//vecPnt[i] = Math.random()*465;
// vecPnt[i+1] = Math.random()*465;
vecPnt[i] = 235 + Math.sin(i*0.2)*128;
vecPnt[i+1] = 235 + Math.cos(i*0.2)*128;
}//nexti
stage.addEventListener(MouseEvent.CLICK, onClick);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var skin:BitmapData;
public function onClick(e:MouseEvent):void
{ cx = Math.random()*430; cy = Math.random() * 430; }
public var vecVert:Vector.<Number> = new Vector.<Number>(12, false);
public var vecUv:Vector.<Number> = new Vector.<Number>(12, false);
public var vecPnt:Vector.<Number> = new Vector.<Number>(256, false);
public function drawLineStrip(vec:Vector.<Number>, num:int, r:Number):void
{
var i:int; var num:int;
var ax:Number; var ay:Number; var bx:Number; var by:Number;
var ang:Number; var ca:Number; var sa:Number;
var u0:Number; var v0:Number; var u1:Number; var v1:Number;
u0 = 0; v0 = 0; u1 = 1; v1 = 1;
if (num > vec.length) { num = vec.length;}
vecUv[0] = u0; vecUv[1] = v0; //0
vecUv[2] = u0; vecUv[3] = v1; //1
vecUv[4] = u1; vecUv[5] = v0; //2
vecUv[6] = u1; vecUv[7] = v0; //2
vecUv[8] = u0; vecUv[9] = v1; //1
vecUv[10] = u1; vecUv[11] = v1; //3
var x0:Number; var y0:Number;
var x1:Number; var y1:Number;
var x2:Number; var y2:Number;
var x3:Number; var y3:Number;
ax=0;ay=0; bx=0;by=0;
for (i = 0; i < num; i+=2)
{
if (i ==0)
{ bx = vec[0]; by = vec[i+1]; continue; }
ax = bx; ay = by;
x0=x2; y0 = y2; x1=x3; y1 = y3;
bx = vec[i]; by = vec[i+1];
ang = Math.atan2(by-ay, bx-ax);
ca = Math.cos(ang) * r; sa = Math.sin(ang) * r;
//graphics.drawCircle(vec[i],vec[i+1],r);
//graphics.moveTo(ax,ay); graphics.lineTo(bx,by);
if (i == 2)
{ x0 = ax+sa; y0 = ay-ca; x1 = ax-sa; y1 = ay+ca; }
x2 = bx+sa; y2 = by-ca; x3 = bx-sa; y3 = by+ca;
vecVert[0] = x0; vecVert[1] = y0; //0
vecVert[2] = x1; vecVert[3] = y1; //1
vecVert[4] = x2; vecVert[5] = y2; //2
vecVert[6] = x2; vecVert[7] = y2; //2
vecVert[8] = x1; vecVert[9] = y1; //1
vecVert[10] = x3; vecVert[11] = y3; //3
graphics.beginBitmapFill(skin);
graphics.drawTriangles(vecVert,null,vecUv);
graphics.endFill();
}//nexti
}//drawlinestrip
/*
public function drawLine(ax:Number, ay:Number, bx:Number, by:Number, r:Number = 16):void
{
var ang:Number; var ca:Number; var sa:Number;
ang = Math.atan2(by-ay, bx-ax);
ca = Math.cos(ang) * r;
sa = Math.sin(ang) * r;
var u0:Number; var v0:Number;
var u1:Number; var v1:Number;
u0 = 0; v0 = 0;
u1 = 1; v1 = 1;
vecVert[0] = ax + sa; vecVert[1] = ay - ca; //0
vecVert[2] = ax - sa; vecVert[3] = ay + ca; //1
vecVert[4] = bx + sa; vecVert[5] = by - ca; //2
vecVert[6] = bx + sa; vecVert[7] = by - ca; //2
vecVert[8] = ax - sa; vecVert[9] = ay + ca; //1
vecVert[10] = bx - sa; vecVert[11] = by + ca; //3
vecUv[0] = u0; vecUv[1] = v0; //0
vecUv[2] = u0; vecUv[3] = v1; //1
vecUv[4] = u1; vecUv[5] = v0; //2
vecUv[6] = u1; vecUv[7] = v0; //2
vecUv[8] = u0; vecUv[9] = v1; //1
vecUv[10] = u1; vecUv[11] = v1; //3
// graphics.beginFill(0xFF, 1);
graphics.beginBitmapFill(skin);
graphics.drawTriangles(vecVert,null,vecUv);
graphics.endFill();
}//drawline
*/
public var cx:Number =230;
public var cy:Number = 230;
public var gt:int = 0;
public function onEnter(e:Event):void
{
graphics.clear();
graphics.lineStyle(1, 0);
var mx:Number; var my:Number;
mx = stage.mouseX; my = stage.mouseY;
// drawLine(cx, cy, mx, my, 16);
drawLineStrip(vecPnt, 32, 16);
var i:int; var num:int;
num = vecPnt.length;
for (i =0; i < num; i+=2)
{
vecPnt[i] = 235 + Math.sin((i+gt*0.1)*0.1)*128;
vecPnt[i+1] = 235 + Math.cos((i+gt*0.1)*0.1)*128;
}//nexti
gt+=1;
}//onenter
}//classend
}