絵具が混ざり合うような感じ
ボールとボールがくっつく。
@author SIBA
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.GradientType;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.geom.Point;
/**
* ボールとボールがくっつく。
* @author SIBA
*/
public class Main01 extends Sprite
{
// ----------------------------
// 定数
// ----------------------------
private var BALL_NUMBER:int = 100; // 表示するボールの数
// ----------------------------
// メンバ変数
// ----------------------------
private var balls:Array = []; // ボールを格納している配列
private var ballLayer:Sprite = new Sprite(); // ボールを置くコンテナ
private var dispImage:Bitmap;
// ----------------------------
// 初期化
// ----------------------------
public function Main01()
{
// ボールを置くコンテナを設定
ballLayer.filters = [new BlurFilter(30, 30, 1)];
addChild(ballLayer);
// 表示するイメージを設定
dispImage = new Bitmap(new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00FFFFFF));
addChild(dispImage);
// ボールを作成
for (var i:int=0; i<BALL_NUMBER; i++)
{
var ball:Sprite = new Sprite();
ball.graphics.beginFill(Math.random()*0xFFFFFF);
ball.graphics.drawCircle(0, 0, 30);
ball.graphics.endFill();
ball.x = Math.random()*stage.stageWidth;
ball.y = Math.random()*stage.stageHeight;
balls[balls.length] = ball;
ballLayer.addChild(ball);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
// ----------------------------
// イベント
// ----------------------------
private function onEnterFrame(event:Event):void {
// ボールの移動
for (var i:int=0; i<BALL_NUMBER; i++)
{
var ball:Sprite = balls[i] as Sprite;
ball.x += Math.random()*2-1;
ball.y += Math.random()*2-1;
}
// 画像の変更
const bitmapData:BitmapData = dispImage.bitmapData;
bitmapData.fillRect(bitmapData.rect, 0x00FFFFFF);
bitmapData.draw(ballLayer);
bitmapData.threshold(bitmapData, bitmapData.rect, new Point(), "<", 0x80000000, 0xFFFFFFFF, 0xFF000000, true);
}
}
}