flash on 2012-11-8
♥0 |
Line 73 |
Modified 2012-11-08 21:43:03 |
MIT License
archived:2017-03-30 22:57:09
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/7E3I
*/
package {
import flash.events.Event;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.Sprite;
public class FlashTest extends Sprite {
//based on
//http://lodev.org/cgtutor/tunnel.html
public var pic:Bitmap;
public var tex:BitmapData;
public var scw:int = 400;
public var sch:int = 400;
public var tot:int = scw*sch;
public var vecDist:Vector.<int> = new Vector.<int>(tot,false);
public var vecAng:Vector.<int> = new Vector.<int>(tot,false);
public function FlashTest() {
pic = new Bitmap(new BitmapData(scw,sch,false,0));
addChild(pic);
pic.width = 460;
pic.height = 460;
tex = new BitmapData(64,64,false,0);
var i:int;
var k:int;
var yt:int;
for (i = 0; i < 64; i++)
{
for (k = 0; k < 64; k++)
{
tex.setPixel(k,i, k^i);
}//nextk
}//nexti
pic.bitmapData.draw(tex);
var w:Number;
var h:Number;
// pic.bitmapData.fillRect(pic.bitmapData.rect,0xFF0000);
for (i = 0; i < sch; i++)
{
yt = i * scw;
for (k = 0; k < scw; k++)
{
w = k - (scw/2);
h = i - (sch/2);
vecDist[yt+k] = (32 * 64 / Math.sqrt(w*w+h*h) ) % 64;
vecAng[yt+k] = (0.5*64*Math.atan2(h,w)) /3.1415;
}//nextk
}//nexti
// onEnter(null);
//onEnter(null);
// pic.bitmapData.fillRect(pic.bitmapData.rect,0xFF0000);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var anim:Number = 0;
public function onEnter(e:Event):void
{
var c:uint;
var b:BitmapData;
var sx:int;
var sy:int;
var i:int;
var k:int;
var yt:int;
anim += 0.01;
b = pic.bitmapData;
b.lock();
// b.fillRect(b.rect, 0);
sx = 64*anim;
sy = 64; // + 64 * Math.cos(anim); //-Math.sin(anim); // + 64 *anim;
for (i = 0; i < sch; i++)
{
yt = i * scw;
for (k = 0; k < scw; k++)
{
c = tex.getPixel( (vecDist[k+yt]+sx)%64, (vecAng[k+yt]+sy)%64 );
b.setPixel(k,i,c);
}//nextk
}//nexti
b.unlock();
}//onenter
}//classend
}