Melting
Wanted to create something like the classic Doom screen fade effect
♥0 |
Line 93 |
Modified 2012-07-26 22:33:35 |
MIT License
archived:2017-03-30 23:00:32
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/8Dy8
*/
package {
import flash.events.Event;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public var vecBar:Array = new Array();
public function FlashTest() {
var pic:Bitmap;
var canvas:BitmapData;
canvas = new BitmapData(320,240,false);
canvas.noise(Math.random()*255);
pic = new Bitmap(canvas);
//pic.scaleX = pic.scaleY = 2;
//addChild(pic);
scaleX = scaleY =2;
var i:int;
var a:Bar;
for (i = 0; i < 320; i++)
{
a = new Bar();
a.makeBar(canvas,i,0,1,240);
//a.y = Math.random() * 20;
addChild(a);
a.vy = Math.abs(160 - i) * -0.1;
a.vy += 10;
if (a.vy < 0) {a.vy= 0;}
vecBar.push(a);
}//nexti
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public function reset():void
{
var i:int;
var num:int;
var a:Bar;
num = vecBar.length;
for (i =0; i < num; i++)
{
a = vecBar[i];
a.y = 0;
a.vy = 0;
a.vy = Math.abs(160 - i) * -0.1;
a.vy += 10;
if (a.vy < 0) {a.vy= 0;}
}//nexti
}//reset
public function onEnter(e:Event):void
{
var i:int;
var num:int;
var a:Bar;
var k:Number;
k = 999;
num = vecBar.length;
for (i =0; i < num; i++)
{
a = vecBar[i];
a.y += a.vy;
a.vy += 0.125 + Math.random();
if (a.y < k) { k = a.y;}
}//nexti
if (k >= 300) { reset(); }
}//onenter
}//classend
}
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.display.Bitmap;
internal class Bar extends Sprite
{
public var vy:Number = 0;
public var pic:Bitmap;
public var canvas:BitmapData;
public function Bar()
{}//ctor
public static var rect:Rectangle = new Rectangle();
public static var dest:Point = new Point();
public function makeBar(src:BitmapData, x_:int, y_:int, w_:int, h_:int):void
{
canvas = new BitmapData(w_,h_,false);
x = x_;
rect.x = x_;
rect.y = y_;
rect.width = w_;
rect.height = h_;
canvas.copyPixels(src,rect, dest);
if (pic == null)
{
pic = new Bitmap(canvas);
addChild(pic);
}
}//makebar
};//stripe