利用Bitmap特效 之 美女被风吹散
以下是我在学Flash as中整理出的一个用Bitmap特效制作出来的“美女被风吹散”的小游戏,跟大家分享一下。
代码:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.geom.Point;
import flash.geom.Rectangle;
/**
* ...
* @author flashk
*/
public class Min extends Sprite
{
public var a_mc:MovieClip;
private var bd:BitmapData;
private var bds:BitmapData;
private var ps:Array;
public function Min() {
bd = new BitmapData(1420, 300, true);
bds = new BitmapData(a_mc.width, a_mc.height, true);
bds.draw(a_mc);
var bp:Bitmap = new Bitmap();
bp.bitmapData = bd;
this.addChild(bp);
start();
}
private function start():void {
ps = new Array();
for (var i:int = 1; i <= bds.width; i++) {
for (var j:int = 1; j <= bds.height; j++) {
ps.push(new Po(i, j, bds.getPixel32(i, j),bds.width));
}
}
this.addEventListener(Event.ENTER_FRAME, render);
this.removeChild(a_mc);
}
private function render(event:Event):void {
var po;
//bd.fillRect(new Rectangle(0, 0, bd.width, bd.height), 0);
bd.applyFilter(bd, new Rectangle(0, 0, bd.width, bd.height), new Point(0, 0), new BlurFilter(2, 2, 1));
bd.lock();
var len = ps.length;
for (var i:int = 0 ; i < len; i+=1) {
po = ps[i];
po.move();
bd.setPixel32(po.x, po.y+80, po.color);
}
bd.unlock();
}
}
}
class Po {
public var x:Number;
public var y:Number;
public var color:uint;
private var speed:Number;
private var r:Number = 0;
private var by:Number;
public function Po(x:Number, y:Number, color:uint,w:Number) {
this.x = x;
this.y = y;
this.color = color;
this.speed = Math.random() * 10 - (w - x) / 2;
//r = Math.random() * 50;
this.by = y;
}
public function move():void {
speed += 0.5;
if(speed>0){
this.x += speed;
r += 10;
this.y = this.by + Math.sin(r* Math.PI/180)*50;
}
}
}
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |