どうもどうもこんばんわ Saqoosha です。
みなさん、今回の CHECKMATE どうでした? 難しかった?
いやー、出題する方もなかなか大変でござるよー。
ある程度テーマを絞りつつ、でも自由度はないといけないっていうね。
そういう意味では「虹」も「オノマトペ」もいい感じにみんな違った方向の作品がでてきたのでおもしろかったですな。
んー、みんなすごいなー、おもしろいなー。負けてられないのでちょっとみんなのソースコード研究してくる! んじゃっ!
Good Evening. This is Saqoosha.
How's the CHECKMATE this time? Difficult?
I also had a tough time while making these questions.
Although, there are two diffrent classes, it must allow each person's style.
In this sense, I had fun looking at them, since both themes ended up with various challenge and creation.
Everyone is wonderful! Interesting! Well, now I feel like to challenge myself, so I will start reserching on everyone's source codes. Bye now!
alumican_net
- /**
- * Stardust Rainbow
- * 長い時間見続けると酔うという、いわくつきのFlash
- *
- * forked from checkmate's Saqoosha challenge for amateurs
- */
- package
- {
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.BlendMode;
- import flash.display.Sprite;
- import flash.display.StageQuality;
- import flash.display.StageScaleMode;
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import flash.geom.Point;
- import flash.geom.Rectangle;
- import org.libspark.betweenas3.easing.Quint;
- [SWF(width = 465, height = 465, backgroundColor = 0x0, frameRate = 30)]
- public class StardustRainbow extends Sprite
- {
- //-------------------------------------
- //CLASS CONSTANTS
- private const W:uint = 465;
- private const H:uint = 465;
- private const SPRING:Number = 0.96;
- private const FRICTION:Number = 0.15;
- private const PI:Number = Math.PI;
- private const PI2:Number = PI * 2;
- private const PI1_2:Number = PI * 0.5;
- private const ZEROS:Point = new Point(0, 0);
- private const RECT:Rectangle = new Rectangle(0, 0, W, H);
- //-------------------------------------
- //VARIABLES
- private var _gradation:Gradation;
- private var _container:Sprite;
- private var _particles:Array;
- private var _blurFilter:BlurFilter;
- private var _canvasFront:BitmapData;
- private var _canvasBlur:BitmapData;
- private var _px:Number;
- private var _py:Number;
- private var _ox:Number;
- private var _oy:Number;
- private var _vx:Number;
- private var _vy:Number;
- static public var starShapeX:Array;
- static public var starShapeY:Array;
- //-------------------------------------
- //METHODS
- public function StardustRainbow():void
- {
- Wonderfl.disable_capture();
- addEventListener(Event.ADDED_TO_STAGE, _initialize);
- }
- /**
- * EntryPoint
- */
- private function _initialize(e:Event):void
- {
- removeEventListener(Event.ADDED_TO_STAGE, _initialize);
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.quality = StageQuality.LOW;
- //虹色グラデーション
- _gradation = new Gradation(0xff0000, 0xff8000, 0xffff00, 0x00ff00, 0x00ffff, 0x0000ff, 0x8000ff);
- _gradation.setEasing(Quint.easeInOut);
- _container = new Sprite();
- _particles = new Array();
- addChild(new Bitmap( _canvasFront = new BitmapData(W, H, true, 0x0) ) ) as Bitmap;
- _canvasBlur = _canvasFront.clone();
- _blurFilter = new BlurFilter(48, 48, 1);
- _ox = _px = mouseX;
- _oy = _py = mouseY;
- _vx = _vy = 0;
- starShapeX = new Array(10);
- starShapeY = new Array(10);
- for (var i:uint = 0; i < 10; ++i)
- {
- var angle:Number = (i / 10) * Math.PI * 2;
- var s:Number = (i % 2 == 0) ? 10 : 10 * 0.5;
- starShapeX[i] = s * Math.cos(angle);
- starShapeY[i] = s * Math.sin(angle);
- }
- addEventListener(Event.ENTER_FRAME, _update);
- }
- /**
- * Updator
- */
- private function _update(e:Event):void
- {
- var dx:Number = mouseX - _px,
- dy:Number = mouseY - _py,
- ax:Number = dx * SPRING,
- ay:Number = dy * SPRING,
- p:Star,
- a:Number,
- i:int,
- n:int = _particles.length,
- angle:Number = Math.atan2(_vy, _vx);
- _vx += ax;
- _vy += ay;
- _px += _vx;
- _py += _vy;
- for (i = n - 1; i >= 0; --i)
- {
- p = _particles[i];
- p.v += p.a;
- p.x += p.v * Math.cos(p.angle);
- p.y += p.v * Math.sin(p.angle);
- p.rotation += p.rot;
- p.scaleX = p.scaleY += p.v * 0.01;
- //画面外のは削除
- if (p.x < 0 || p.x > W || p.y < 0 || p.y > H)
- {
- _container.removeChild( _particles.splice(i, 1)[0] );
- }
- }
- n = 20;
- for (i = 0; i < n; ++i)
- {
- p = new Star();
- p.x = mouseX;
- p.y = mouseY;
- p.a = 1.0 + (Math.random() - 0.5) * 0.2;
- p.v = 0;
- p.rot = (Math.random() - 0.5) * 10;
- p.rotation = Math.random() * PI2;
- p.angle = angle * 2 + (i - n / 2) * 0.2 + PI1_2;
- p.createShape(_gradation.getColor(i / n));
- p.blendMode = BlendMode.ADD;
- _container.addChildAt(p, 0);
- _particles.push(p);
- }
- _vx *= FRICTION;
- _vy *= FRICTION;
- _ox = _px;
- _oy = _py;
- //drawing
- _canvasFront.lock();
- _canvasBlur.lock();
- _canvasFront.fillRect(RECT, 0x0);
- _canvasFront.draw(_container);
- _canvasBlur.copyPixels(_canvasFront, RECT, ZEROS);
- _canvasBlur.applyFilter(_canvasBlur, RECT, ZEROS, _blurFilter);
- _canvasFront.draw(_canvasBlur);
- _canvasFront.unlock();
- _canvasBlur.unlock();
- }
- }
- }
- import flash.display.Graphics;
- import flash.display.Shape;
- import flash.display.Sprite;
- class Star extends Sprite
- {
- public var a:Number;
- public var v:Number;
- public var angle:Number;
- public var rot:Number;
- public function Star():void
- {
- }
- public function createShape(color:uint):void
- {
- var i:uint;
- var g:Graphics = graphics;
- g.beginFill(color, 1);
- g.moveTo(StardustRainbow.starShapeX[0], StardustRainbow.starShapeY[0]);
- for (i = 0; i < 10; ++i) g.lineTo(StardustRainbow.starShapeX[i], StardustRainbow.starShapeY[i]);
- g.moveTo(StardustRainbow.starShapeX[0] * 0.5, StardustRainbow.starShapeY[0] * 0.5);
- for (i = 0; i < 10; ++i) g.lineTo(StardustRainbow.starShapeX[i] * 0.5, StardustRainbow.starShapeY[i] * 0.5);
- g.endFill();
- }
- }
- /**
- * @author saqoosha
- * @see http://wonderfl.net/code/7ed2d650b9d513edf9a499fb704c19ecb7aa4694
- */
- import frocessing.color.ColorLerp;
- import org.libspark.betweenas3.core.easing.IEasing;
- import org.libspark.betweenas3.easing.Linear;
- class Gradation
- {
- private var _colors:Array;
- private var _easing:IEasing;
- public function Gradation(...args):void
- {
- _colors = args.concat();
- _easing = Linear.linear;
- }
- public function setEasing(easing:IEasing):void
- {
- _easing = easing;
- }
- public function getColor(position:Number):uint
- {
- position = (position < 0 ? 0 : position > 1 ? 1 : position) * (_colors.length - 1);
- var idx:int = position;
- var alpha:Number = _easing.calculate(position - idx, 0, 1, 1);
- if (alpha == 0)
- {
- return _colors[idx];
- }
- else
- {
- return ColorLerp.lerp(_colors[idx], _colors[idx + 1], alpha);
- }
- }
- }
- 出題者からのコメント
- うひょー、超派手、キレー!好きー!
- Comments from King
- Wow! It's so flashy and beautiful! I love it!
k3lab
- // forked from checkmate's Saqoosha challenge for amateurs
- package {
- import flash.display.*;
- import flash.events.*;
- import flash.filters.*;
- import flash.geom.*;
- import flash.media.Sound;
- import flash.net.URLRequest;
- import flash.utils.getTimer;
- import com.bit101.components.Label;
- /**
- *
- * @author k3lab
- */
- [SWF(width="465", height="465", frameRate="60")]
- public class Main extends Sprite {
- private static const PARTICLE_NUM:int = 500;
- private static const SPRING:Number = 0.18;
- private static const FRICTION:Number = 0.75;
- private var canvas:BitmapData;
- private var clones:BitmapData;
- private var pArr:Array = [];
- private var volArr:Array = []
- private var colorArr:Array = []
- private var clt:ColorTransform = new ColorTransform(1, 1, 1, 1, 0, -10, -10, -10);
- private var sp:Sprite;
- private var trail:Sprite;
- private var vx:Number = 0;
- private var vy:Number = 0;
- private var ratio:Number = 0;
- private var grad:Gradation;
- public function Main():void {
- if (stage) init();
- else addEventListener(Event.ADDED_TO_STAGE, init);
- }
- private function init(e:Event = null):void {
- removeEventListener(Event.ADDED_TO_STAGE, init);
- //BGM
- var sound:Sound = new Sound (new URLRequest ("http://www.k3lab.com/wonderfl/Euphoria/bgm.mp3"));
- sound.play (0, int.MAX_VALUE);
- canvas = new BitmapData(465, 465, false, 0x00000000);
- clones = canvas.clone();
- addChild(new Bitmap(clones)) as Bitmap;
- grad = new Gradation(0xff0000, 0x00ff00, 0x0000ff);
- var a:Number = 0;
- sp = addChild(new Sprite()) as Sprite;
- sp.blendMode = "screen";
- for (var i:int = 0; i < PARTICLE_NUM; i++) {
- a += 0.2
- var p:Particle =sp.addChild(new Particle()) as Particle;
- p._x = 240 * Math.sin(a);
- p._y = 240 * Math.cos(a);
- p._z = 0;
- pArr[i] = p
- p.draw(grad.getColor(i / PARTICLE_NUM), 0.6, Math.random() * 0.6);
- }
- //******************************************
- //付属品
- mouseTrail();
- createBg();
- createHeader();
- createBar();
- createVolume();
- //******************************************
- addEventListener(Event.ENTER_FRAME, loop);
- }
- //************************************************************
- //マウストレイル
- private function mouseTrail():void {
- trail = addChild(new Sprite()) as Sprite;
- trail.graphics.beginFill(0xFFFFFF);
- trail.graphics.drawRect( -10, 0, 20, 1);
- trail.graphics.drawRect(0 , -10, 1, 20);
- trail.graphics.endFill();
- var circles:Sprite=trail.addChild(new Sprite()) as Sprite;
- circles.graphics.beginFill(0xFFFFFF);
- circles.graphics.drawRect( -465, 0, 1030, 1);
- circles.graphics.drawRect( 0, -465, 1, 1030);
- circles.graphics.endFill();
- circles.alpha = 0.2;
- }
- //全体のBG
- private function createBg():void {
- var pattern:BitmapData = background()
- var bg:Sprite = addChild(new Sprite()) as Sprite;
- bg.graphics.beginBitmapFill(pattern);
- bg.graphics.drawRect(0, 0, 465, 465)
- bg.graphics.endFill();
- bg.alpha = 0.3;
- }
- //上のTitle&BG
- private function createHeader():void {
- var tbg:Sprite = addChild(new Sprite()) as Sprite;
- tbg.graphics.beginFill(0);
- tbg.graphics.drawRect( 0, 0, 465, 18);
- tbg.graphics.endFill();
- var title:Label = new Label(this, 147, 0, "Barrage of Rainbow Exploration ver.0.1");
- title.blendMode = "invert"
- }
- //左上のColor Bar
- private function createBar():void {
- var cl:Array = [0xff0000, 0x00ff00, 0x0000ff]
- var clsp:Sprite = addChild(new Sprite()) as Sprite;
- for (var i:int = 0; i < 3; i++) {
- var colors:Sprite = clsp.addChild(new Sprite()) as Sprite;
- colors.graphics.beginFill(cl[i]);
- colors.graphics.drawRect( 0, 0, 10,10);
- colors.graphics.endFill();
- colors.x = 11 * i;
- }
- clsp.x = 4;
- clsp.y = 4;
- }
- //右上のvoloume
- private function createVolume():void {
- var volsp:Sprite = addChild(new Sprite()) as Sprite;
- for (var i:int = 0; i < 7; i++) {
- var vol:Sprite = volsp.addChild(new Sprite()) as Sprite;
- vol.graphics.beginFill(0xFFFFFF);
- vol.graphics.drawRect( 0, 0, 1, -10);
- vol.graphics.endFill();
- vol.x=2*i
- volArr[i] = vol;
- }
- volsp.x = stage.stageWidth - volsp.width - 5;
- volsp.y = 15;
- }
- private function voloop():void {
- for each(var v:Sprite in volArr) {
- v.height = Math.sin(getTimer() / 500 * Math.random() * 5) * 10;
- }
- }
- private function trailoop():void {
- vx += (mouseX - trail.x) * SPRING;
- vy += (mouseY - trail.y) * SPRING;
- vx *= FRICTION;
- vy *= FRICTION;
- trail.x += int(vx);
- trail.y += int(vy);
- }
- //************************************************************
- private function loop(e:Event):void {
- voloop();
- trailoop();
- var zp:Number = 0;
- var i:int;
- for each(var p:Particle in pArr) {
- var xa:Number = Math.sin(Math.PI * (getTimer()+i*100) % 30000 / 30000 * 360 / 180) / 20;
- var ya:Number = Math.sin(Math.PI * (getTimer()+i*100) % 1500 / 1500 * 360 / 180) / 20;
- var yp:Number = p._y * Math.cos(ya) -p._z * Math.sin(ya);
- zp =p._y * Math.sin(ya) + p._z * Math.cos(ya);
- var xp:Number = p._x * Math.cos(xa) + zp * Math.sin(xa);
- zp = ( -p._x) * Math.sin(xa) + zp * Math.cos(xa);
- p._x = xp;
- p._y = yp;
- p._z = zp;
- p.alpha = Math.random() * 1;
- (p._z < -95)?p.visible = false:p.visible = true;
- ratio = 1 / (p._z /100 + 1)
- var num:Number = 0;
- p.scaleY = num = ratio * 7;
- p.scaleX = num;
- p.x += (p._x * ratio + (mouseX) - p.x) / 10;
- p.y += (p._y * ratio +( mouseY) - p.y) / 10;
- canvas.setPixel(p.x, p.y, grad.getColor(i /PARTICLE_NUM));
- i++;
- }
- clones.lock();
- canvas.lock();
- canvas.draw(sp)
- clones.merge(canvas, canvas.rect, new Point(),zp/10,zp/100, zp*10,0.5);
- clones.draw(canvas, null, new ColorTransform(100 * zp, 10, 10), "add");
- canvas.applyFilter(canvas, canvas.rect, new Point(0, 0), new BlurFilter(20, 20, 1));
- clones.scroll(0, 1);
- clones.colorTransform(clones.rect, clt);
- canvas.colorTransform(canvas.rect, clt);
- clones.unlock();
- canvas.unlock();
- }
- public function background():BitmapData{
- return BitmapPatternBuilder.build(
- [[1, 0, 0],
- [0, 1, 0],
- [0, 0, 1]],
- [0xFF000000, 0xffffffff]
- );
- }
- }
- }
- import flash.display.Graphics;
- import flash.display.Sprite;
- class Particle extends Sprite {
- public var _x:Number=0;
- public var _y:Number=0;
- public var _z:Number=0;
- public function draw(color:int, alpha:Number, size:Number):void {
- graphics.beginFill(color, alpha);
- graphics.drawCircle(0, 0, size);
- graphics.endFill();
- }
- }
- import frocessing.color.ColorLerp;
- import org.libspark.betweenas3.core.easing.IEasing;
- import org.libspark.betweenas3.easing.Linear;
- class Gradation {
- private var _colors:Array;
- private var _easing:IEasing;
- public function Gradation(...args) {
- _colors = args.concat();
- _easing = Linear.linear
- }
- public function setEasing(easing:IEasing):void {
- _easing = easing;
- }
- public function getColor(position:Number):uint {
- position = (position < 0 ? 0 : position > 1 ? 1 : position) * (_colors.length - 1);
- var idx:int = position;
- var alpha:Number = _easing.calculate(position - idx, 0, 1, 1);
- if (alpha == 0) {
- return _colors[idx];
- } else {
- return ColorLerp.lerp(_colors[idx], _colors[idx + 1], alpha);
- }
- }
- }
- /**-----------------------------------------------------
- * @see http://wonderfl.net/code/5f88476bd21cac4d45ad2086af2333782a5d3cb8
- * -----------------------------------------------------
- */
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.Graphics;
- class BitmapPatternBuilder{
- /**
- * creates BitmapData filled with dot pattern.
- * First parameter is 2d array that contains color index for each pixels;
- * Second parameter contains color reference table.
- *
- * @parameter pattern:Array 2d array that contains color index for each pixel.
- * @parameter colors:Array 1d array that contains color table.
- * @returns BitmapData
- */
- public static function build(pattern:Array, colors:Array):BitmapData{
- var bitmapW:int = pattern[0].length;
- var bitmapH:int = pattern.length;
- var bmd:BitmapData = new BitmapData(bitmapW,bitmapH,true,0x000000);
- for(var yy:int=0; yy<bitmapH; yy++){
- for(var xx:int=0; xx<bitmapW; xx++){
- var color:int = colors[pattern[yy][xx]];
- bmd.setPixel32(xx, yy, color);
- }
- }
- return bmd;
- }
- /**
- * short cut function for Graphics.beginBitmapFill with pattern.
- */
- public static function beginBitmapFill(pattern:Array, colors:Array, graphics:Graphics):void{
- var bmd:BitmapData = build(pattern, colors);
- graphics.beginBitmapFill(bmd);
- bmd.dispose();
- }
- }
- 出題者からのコメント
- なにがなんだかよくわかんないけどカコイイ!
- Comments from King
- I'm not really get it but it's so cool!
sekiryou
- //forked from: Saqoosha challenge for amateurs
- package {
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.geom.Point;
- import flash.geom.Matrix;
- import flash.geom.ColorTransform;
- import flash.geom.Rectangle;
- import flash.filters.BlurFilter;
- import org.libspark.betweenas3.easing.Circ;
- [SWF(width=465, height=465, backgroundColor=0x000000, frameRate=30)]
- public class IridescentLocus extends Sprite {
- private const STAGE_WIDTH = stage.stageWidth;
- private const STAGE_HEIGHT = stage.stageHeight;
- private const STAGE_CENTER_X = stage.stageWidth / 2;
- private const STAGE_CENTER_Y = stage.stageHeight / 2;
- private var SatelliteAmount:uint = 20;
- private var satellites:Array = [];
- private var FocalLength:Number = 124;
- private var grad:Gradation;
- private var rAcrc:uint = 12;
- private var _canvas:BitmapData;
- private var bmp:Bitmap;
- private var _particles:Array;
- private var _rect:Rectangle;
- private var cTra:ColorTransform;
- public function IridescentLocus() {
- init();
- }
- private function init():void {
- _canvas = new BitmapData (STAGE_WIDTH, STAGE_HEIGHT, true, 0xFFFFFF);
- bmp = new Bitmap (_canvas);
- addChild (bmp);
- _rect = new Rectangle(0, 0, STAGE_WIDTH, STAGE_HEIGHT);
- cTra = new ColorTransform( 0.92, 0.92, 0.92, 1.0 );
- IridescentMake();
- for ( var i:uint = 0; i < SatelliteAmount; i++ )
- {
- var s:Satellite = new Satellite();
- satellites.push( s );
- WtoS( s );
- }
- addEventListener( Event.ENTER_FRAME, onEnterFrameHandler );
- }
- private function WtoS( t ):void {
- if ( t.pz > -FocalLength ) {
- t.bv_orgX = t.v_orgX;
- t.bv_orgY = t.v_orgY;
- t.bv_trmX = t.v_trmX;
- t.bv_trmY = t.v_trmY;
- t.bx = t.x;
- t.by = t.y;
- t.scale = FocalLength / ( FocalLength + t.pz );
- t.x = STAGE_CENTER_X + t.px * t.scale;
- t.y = STAGE_CENTER_Y + t.py * t.scale;
- t.v_orgX = STAGE_CENTER_X + t.orgX * t.scale;
- t.v_orgY = STAGE_CENTER_Y + t.orgY * t.scale;
- t.v_trmX = STAGE_CENTER_X + t.trmX * t.scale;
- t.v_trmY = STAGE_CENTER_Y + t.trmY * t.scale;
- t.scaleX = t.scaleY = t.scale;
- t.visible = true;
- } else {
- t.visible = false;
- }
- }
- private function onEnterFrameHandler( e:Event ) {
- _canvas.lock();
- _canvas.colorTransform(_rect, cTra);
- for ( var i:uint = 0; i < SatelliteAmount; i++ )
- {
- var s = satellites[ i ];
- s.motion();
- s.axisCalculate();
- WtoS( s );
- var varX:Number = ( s.v_trmX - s.v_orgX ) / rAcrc;
- var varY:Number = ( s.v_trmY - s.v_orgY ) / rAcrc;
- var b_varX:Number = ( s.bv_trmX - s.bv_orgX ) / rAcrc;
- var b_varY:Number = ( s.bv_trmY - s.bv_orgY ) / rAcrc;
- for ( var j:uint = 0; j < rAcrc; j++ )
- {
- var line:Sprite = new Sprite();
- line.graphics.lineStyle( 1.6, grad.getColor( j / rAcrc ) );
- line.graphics.moveTo( s.x + varX * j - varX * rAcrc / 2, s.y + varY * j - varY * rAcrc / 2 );
- line.graphics.lineTo( s.bx + b_varX * j - b_varX * rAcrc / 2, s.by + b_varY * j - b_varY * rAcrc / 2 );
- _canvas.draw( line )
- }
- }
- _canvas.unlock();
- }
- private function IridescentMake():void {
- grad = new Gradation( 0x660066, 0x0000FF, 0x00FFFF, 0x00FF00, 0xFFFF00, 0xFF6600, 0xFF0000 );
- grad.setEasing(Circ.easeInOut);
- }
- }
- }
- import flash.display.Sprite;
- class Satellite extends Sprite {
- public var scale:Number;
- public var px:Number;
- public var py:Number;
- public var pz:Number;
- public var vx:Number;
- public var vy:Number;
- public var vz:Number;
- public var line_width:Number;
- public var pr:Number;
- public var vr:Number;
- public var orgX:Number;
- public var orgY:Number;
- public var orgZ:Number;
- public var trmX:Number;
- public var trmY:Number;
- public var trmZ:Number;
- public var v_orgX:Number;
- public var v_orgY:Number;
- public var bv_orgX:Number;
- public var bv_orgY:Number;
- public var v_trmX:Number;
- public var v_trmY:Number;
- public var bv_trmX:Number;
- public var bv_trmY:Number;
- public var bx:Number;
- public var by:Number;
- public var hx:Number;
- public var hy:Number;
- public var hz:Number;
- public var ratioX:Number;
- public var ratioY:Number;
- public var ratioZ:Number;
- public var friction:int;
- public var depth:int;
- public function Satellite() {
- init();
- }
- private function init():void {
- line_width = 6;
- px = Math.random() * 240 - 120;
- py = Math.random() * 240 - 120;
- pz = Math.random() * 240 - 120;
- hx = 0;
- hy = 0;
- hz = 0;
- friction = 1;
- depth = 640;
- ratioX = ( Math.random() * 4 + 2 ) / depth;
- ratioY = ( Math.random() * 4 + 2 ) / depth;
- ratioZ = ( Math.random() * 4 + 2 ) / depth;
- vx = 0;
- vy = 0;
- vz = 0;
- pr = 0;
- vr = Math.random() * 0.6 - 0.3;
- axisCalculate();
- }
- public function motion():void {
- vx = ( vx * friction) + ( ( hx - px ) * ratioX );
- vy = ( vy * friction) + ( ( hy - py ) * ratioY );
- vz = ( vz * friction) + ( ( hz - pz ) * ratioZ );
- px += vx;
- py += vy;
- pz += vz;
- if ( Math.abs( px ) < 8 && Math.abs( py ) < 8 && Math.abs( pz ) < 8 ) {
- if( Math.abs( vx ) < 1 && Math.abs( vy ) < 1 && Math.abs( vz ) < 1 ){
- init();
- }
- }
- }
- public function axisCalculate():void {
- var pp_orgX:Number = px + 0;
- var pp_orgY:Number = py + line_width / 2;
- var pp_orgZ:Number = pz + 0;
- var pp_trmX:Number = px + 0;
- var pp_trmY:Number = py - line_width / 2;
- var pp_trmZ:Number = pz + 0;
- var angle:Number = Math.atan2( py, px );
- pr += vr;
- angle += pr;
- var p_orgX:Number = Math.cos( angle ) * ( pp_orgX - px ) - Math.sin( angle ) * ( pp_orgY - py );
- var p_orgY:Number = Math.cos( angle ) * ( pp_orgY - py ) + Math.sin( angle ) * ( pp_orgX - px );
- var p_trmX:Number = Math.cos( angle ) * ( pp_trmX - px ) - Math.sin( angle ) * ( pp_trmY - py );
- var p_trmY:Number = Math.cos( angle ) * ( pp_trmY - py ) + Math.sin( angle ) * ( pp_trmX - px );
- p_orgX += px;
- p_orgY += py;
- p_trmX += px;
- p_trmY += py;
- orgX = p_orgX;
- orgY = p_orgY;
- trmX = p_trmX;
- trmY = p_trmY;
- }
- }
- import frocessing.color.ColorLerp;
- import org.libspark.betweenas3.core.easing.IEasing;
- import org.libspark.betweenas3.easing.Linear;
- class Gradation {
- private var _colors:Array;
- private var _easing:IEasing;
- public function Gradation(...args) {
- _colors = args.concat();
- _easing = Linear.linear;
- }
- public function setEasing(easing:IEasing):void {
- _easing = easing;
- }
- public function getColor(position:Number):uint {
- position = (position < 0 ? 0 : position > 1 ? 1 : position) * (_colors.length - 1);
- var idx:int = position;
- var alpha:Number = _easing.calculate(position - idx, 0, 1, 1);
- if (alpha == 0) {
- return _colors[idx];
- } else {
- return ColorLerp.lerp(_colors[idx], _colors[idx + 1], alpha);
- }
- }
- }
- 出題者からのコメント
- いちばん虹っぽかったYO!
- Comments from King
- The most similar to the rainbow!
osamX
- // forked from checkmate's Saqoosha challenge for professionals
- package
- {
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.TimerEvent;
- import flash.filters.BlurFilter;
- import flash.geom.Point;
- import flash.text.TextField;
- import flash.text.TextFormat;
- import flash.utils.Timer;
- import org.libspark.betweenas3.BetweenAS3;
- import org.libspark.betweenas3.easing.*;
- import org.libspark.betweenas3.tweens.ITween;
- import org.libspark.betweenas3.events.TweenEvent;
- /**
- * おまえん家のマウスカーソル。なんかスメるんだけど。
- */
- [SWF(width=465, height=465, backgroundColor=0xffffff, frameRate=30)]
- public class Smell extends Sprite
- {
- private var smellPoint:Point;
- private var flyPoint:Point;
- private var flyRot:Number = 0;
- private var flyPointArr:Array;
- private const LENGTH:uint = 5;
- private var boSprite:Sprite;
- private var buTf:TextField;
- private var nnTf:TextField;
- private var paletteArr:Array;
- public function Smell():void
- {
- initSmell();
- initFly();
- addEventListener(Event.ENTER_FRAME, onEnterFrame);
- var timer:Timer = new Timer(600, 0);
- timer.addEventListener(TimerEvent.TIMER, timerHandler);
- timer.start();
- createSmell();
- }
- private function initSmell():void {
- smellPoint = new Point(stage.stageWidth / 2, stage.stageHeight / 2);
- paletteArr = [0xcc6600, 0xcc6666, 0xcc6600, 0x663300, 0xffcc00];
- }
- private function initFly():void {
- flyPoint = new Point(stage.stageWidth / 2, stage.stageHeight / 2);
- flyPointArr = new Array();
- //ブ
- buTf = new TextField();
- buTf.selectable = false;
- buTf.defaultTextFormat = new TextFormat(null, null, 0x0, true);
- buTf.text = 'ブ';
- addChild(buTf);
- //ー
- boSprite = new Sprite();
- addChild(boSprite);
- //ン
- nnTf = new TextField();
- nnTf.selectable = false;
- nnTf.defaultTextFormat = new TextFormat(null, null, 0x0, true);
- nnTf.text = 'ン';
- addChild(nnTf);
- //init flyPointArr
- for (var i:uint = 0; i < LENGTH; i++) {
- flyPointArr[i] = new Point(stage.stageWidth / 2, stage.stageHeight / 2);
- }
- }
- private function createSmellBmp(size:uint):Bitmap {
- var tf:TextField = new TextField();
- tf.x = stage.stageWidth * Math.random();
- tf.y = stage.stageHeight * Math.random();
- var fmt:TextFormat = new TextFormat('MS 明朝', size, 0xcc6600, true);
- fmt.color = paletteArr[Math.floor(Math.random()*5)];
- tf.defaultTextFormat = fmt;
- tf.text = "もわっ";
- tf.background = false;
- tf.width = tf.textWidth + 10;
- tf.height = tf.textHeight + 10;
- tf.selectable = false;
- tf.filters = [ new BlurFilter() ];
- var bmd:BitmapData = new BitmapData(tf.width, tf.height, true, 0xFFFFFF);
- bmd.draw(tf);
- return new Bitmap(bmd);
- }
- private function createSmell():void {
- var size:uint = Math.floor(Math.random() * 24 + 8);
- var rot:Number = 360 * Math.random();
- var bmp:Bitmap = createSmellBmp(size);
- addChild(bmp);
- bmp.rotation = rot + 90;
- bmp.x = smellPoint.x;
- bmp.y = smellPoint.y;
- bmp.scaleX = 0;
- bmp.scaleY = 0;
- var tween:ITween = BetweenAS3.tween(bmp,
- { x:bmp.x + 5 * size * Math.cos(Math.PI * rot / 180) ,
- y:bmp.y + 5 * size * Math.sin(Math.PI * rot / 180) ,
- scaleX:3 ,
- scaleY:3 ,
- alpha:0
- },
- null, 2);
- tween.addEventListener(TweenEvent.COMPLETE, function(e:TweenEvent):void {
- removeChild(bmp);
- bmp = null;
- });
- tween.play();
- }
- private function timerHandler(e:TimerEvent):void {
- BetweenAS3.tween(flyPoint, {x: smellPoint.x, y: smellPoint.y }, null, 0.5, Back.easeOutWith(1.9)).play();
- }
- private function onEnterFrame(e:Event):void {
- smellPoint.x += (stage.mouseX - smellPoint.x) / 10;
- smellPoint.y += (stage.mouseY - smellPoint.y) / 10;
- if (Math.floor(Math.random() * 3) == 0) createSmell();
- flyRot = (flyRot + 10) % 360;
- buTf.x = flyPoint.x + 150 * Math.cos(Math.PI * flyRot / 180);
- buTf.y = flyPoint.y + 30 * Math.sin(Math.PI * flyRot / 180);
- refreshFlyPoint(new Point(buTf.x, buTf.y));
- var tp:Point = flyPointArr[LENGTH-1] as Point;
- nnTf.x = tp.x;
- nnTf.y = tp.y;
- drawBo();
- }
- private function refreshFlyPoint(p:Point):void {
- for (var i:uint = LENGTH; i > 0; i--) {
- flyPointArr[i] = flyPointArr[i - 1];
- }
- flyPointArr[0] = p;
- }
- private function drawBo():void {
- boSprite.graphics.clear();
- boSprite.graphics.lineStyle(1);
- for (var i:uint = 1; i < LENGTH - 2; i++) {
- boSprite.graphics.moveTo(flyPointArr[i].x, flyPointArr[i].y+7);
- boSprite.graphics.lineTo(flyPointArr[i+1].x, flyPointArr[i+1].y+7);
- }
- }
- }
- }
- 出題者からのコメント
- これはスメる、かなりスメる! でも僕のカーソルはそんなに臭くないお!
- Comments from King
- This one seems smelly, pretty smelly. But my cursor is not that stinky though!
mex_takagi
- package
- {
- import flash.display.BitmapData;
- import flash.display.Sprite;
- import flash.display.Bitmap;
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import flash.filters.GlowFilter;
- import flash.filters.GradientGlowFilter;
- import flash.geom.Matrix;
- [SWF(width = 465, height = 465, backgroundColor = 0xffffff, frameRate = 30)]
- public class FlashTest extends Sprite
- {
- private var _figureArray:Array;
- private var _canvasSprite:Sprite;
- private var _canvasBmd:BitmapData;
- private var _canvas:Bitmap;
- private var _blurFileter:BlurFilter;
- private var _glowFileter:GradientGlowFilter;
- /**
- * constructor
- */
- public function FlashTest()
- {
- _figureArray = [[0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1],
- [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
- [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
- [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
- [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
- [0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0],
- [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0],
- [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0],
- [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0],
- [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0]];
- _canvasSprite = new Sprite();
- _canvasBmd = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0xFF000000);
- _canvas = new Bitmap(_canvasBmd);
- _glowFileter = new GradientGlowFilter(10, 90, [0xFF0000, 0xFFFF00, 0xFFFFFF], [0.8, 0.6, 1], [0, 120, 255], 8, 10, 1, 1);
- _blurFileter = new BlurFilter(10, 10, 1);
- _canvasSprite.filters = [_blurFileter, _glowFileter];
- var i:uint = 0;
- var row:uint = _figureArray.length;
- for (i = 0; i < row;i++ )
- {
- var line:uint = _figureArray[i].length;
- for (var j:uint = 0; j < line;j++ )
- {
- if (_figureArray[i][j] == 1)
- {
- var unit:BallUnit = new BallUnit();
- unit.x = j * 20;
- unit.y = i * 20;
- _canvasSprite.addChild(unit);
- }
- }
- }
- addChild(_canvas);
- addEventListener(Event.ENTER_FRAME, enterFrameHandler);
- }
- /**
- * enterFrameHandler
- * @param event Event
- */
- private function enterFrameHandler(event:Event):void
- {
- _canvas.bitmapData.dispose();
- var bmd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0xFF000000);
- var matrix:Matrix = new Matrix();
- matrix.translate( 150, 160);
- bmd.lock();
- bmd.draw(_canvasSprite, matrix);
- bmd.unlock();
- bmd.paletteMap(bmd, bmd.rect, bmd.rect.topLeft, null, null, null);
- _canvas.bitmapData = bmd;
- }
- }
- }
- import flash.display.Sprite
- class BallUnit extends Sprite
- {
- private var _ballArray:Array;
- /**
- * constructor
- */
- public function BallUnit()
- {
- _ballArray = new Array();
- for (var i:uint = 0; i < 5;i++ )
- {
- var ball:Ball = new Ball(35 - (i * 4));
- ball.y = -i * 5;
- _ballArray.push(ball);
- if (i != 0)
- {
- _ballArray[i - 1].addChild(ball);
- }
- else
- {
- addChild(ball);
- }
- }
- }
- }
- import flash.display.Sprite
- import flash.events.Event;
- import flash.filters.BlurFilter;
- class Ball extends Sprite
- {
- /**
- * constructor
- * @param size
- */
- public function Ball(size:uint)
- {
- var sprite:Sprite = new Sprite();
- sprite.graphics.beginFill(0xFFFFFF);
- sprite.graphics.drawCircle(0, 0, size / 2);
- sprite.graphics.endFill();
- sprite.x = -size / 2;
- sprite.y = -size / 2;
- var filter:BlurFilter = new BlurFilter();
- sprite.filters = [filter];
- addChild(sprite);
- addEventListener(Event.ENTER_FRAME, enterFrameHandler);
- }
- /**
- * enterFrameHandler
- * @param event
- */
- private function enterFrameHandler(event:Event):void
- {
- x += Math.random() * Math.random()*(2 - (-2) + 1) + (-2) - x;
- y += Math.random() * Math.random()*(6 - (-6) + 1) + (-6) - y - 6;
- }
- }
- 出題者からのコメント
- ボボボボボボボボボーボボボボボーボボボボ。よー燃えとる。
- Comments from King
- Bobobobobobobo! Bobobobobobobo! Bobobobobobobo! It's burning.
soundkitchen
- package
- {
- import flash.display.BlendMode;
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.TimerEvent;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFormat;
- import flash.filters.BitmapFilterQuality;
- import flash.filters.BlurFilter;
- import flash.geom.Point;
- import flash.utils.Timer;
- import com.flashdynamix.utils.SWFProfiler;
- import frocessing.color.ColorHSV;
- import org.libspark.betweenas3.BetweenAS3;
- import org.libspark.betweenas3.easing.*;
- import org.libspark.betweenas3.tweens.ITween;
- [SWF(width=465, height=465, frameRate=60, backgroundColor=0x000000)]
- public class Main extends Sprite
- {
- private static var P_ZERO:Point = new Point();
- private static var F_BLUR:BlurFilter = new BlurFilter(4, 4, BitmapFilterQuality.LOW);
- private var _txt:TextField;
- private var _hsv:ColorHSV;
- private var _film:BitmapData;
- private var _timer:Timer;
- private var _activeParticles:Vector.<Particle>;
- private var _inactiveParticles:Vector.<Particle>;
- public function Main()
- {
- addEventListener(Event.ADDED_TO_STAGE, initialize);
- }
- private function initialize(evt:Event):void
- {
- removeEventListener(Event.ADDED_TO_STAGE, initialize);
- SWFProfiler.init(this);
- var i:uint,
- fmt:TextFormat,
- bm:Bitmap;
- _activeParticles = new Vector.<Particle>();
- _inactiveParticles = new Vector.<Particle>();
- for (i=0; i<10000; i++)
- {
- _inactiveParticles.push(new Particle());
- }
- _hsv = new ColorHSV(0, 1, 1, 1);
- fmt = new TextFormat();
- fmt.font = "Verdana";
- fmt.bold = true;
- fmt.size = 36;
- _txt = new TextField();
- _txt.defaultTextFormat = fmt;
- _txt.autoSize = TextFieldAutoSize.LEFT;
- _txt.text = "パァン!";
- _film = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
- bm = new Bitmap(_film);
- //bm.blendMode = BlendMode.ADD;
- addChild(bm);
- _timer = new Timer(0);
- _timer.addEventListener(TimerEvent.TIMER, timerHandler);
- _timer.start();
- addEventListener(Event.ENTER_FRAME, enterFrameHandler);
- }
- private function enterFrameHandler(evt:Event):void
- {
- var i:uint,
- p:Particle;
- _hsv.h = ++_hsv.h % 360;
- _film.lock();
- _film.applyFilter(_film, _film.rect, P_ZERO, F_BLUR);
- for (i=0; i<_activeParticles.length; i++)
- {
- p = _activeParticles[i];
- p.x += p.vx;
- p.y += p.vy;
- p.life--;
- _film.setPixel32(p.x, p.y, p.color);
- if (!p.life)
- {
- _activeParticles.splice(i, 1);
- _inactiveParticles.push(p);
- i--;
- }
- }
- _film.unlock();
- }
- private function timerHandler(evt:TimerEvent):void
- {
- _timer.delay = (50 + Math.random() * 950) >> 0;
- var sp:Sprite,
- bm:Bitmap,
- bmd:BitmapData,
- t:ITween;
- //_hsv.h = ++_hsv.h % 360;
- _txt.textColor = _hsv.value;
- bmd = new BitmapData(_txt.width, _txt.height, true, 0);
- bmd.draw(_txt);
- bm = new Bitmap(bmd);
- bm.smoothing = true;
- bm.x -= bm.width >> 1;
- bm.y -= bm.height >> 1;
- sp = new Sprite();
- sp.addChild(bm);
- sp.x = (Math.random() * stage.stageWidth) >> 0;
- sp.y = (Math.random() * stage.stageHeight) >> 0;
- sp.scaleX = 0;
- sp.scaleY = 0;
- sp.rotation = (Math.random() * 360) >> 0;
- //sp.blendMode = BlendMode.ADD;
- addChild(sp);
- t = BetweenAS3.serial(
- BetweenAS3.to(sp, {
- 'scaleX': 1,
- 'scaleY': 1,
- 'rotation': 0
- }, 2, Expo.easeIn),
- BetweenAS3.removeFromParent(sp)
- );
- t.onComplete = tweenComplete;
- t.onCompleteParams = [sp, bm, bmd];
- t.play();
- }
- private function tweenComplete(sp:Sprite, bm:Bitmap, bmd:BitmapData):void
- {
- var i:uint, j:uint, c:uint,
- cx:Number, cy:Number,
- angle:Number, strength:Number,
- p:Particle;
- cx = sp.x + bm.x;
- cy = sp.y + bm.y;
- for (i=0; i<bmd.width; i++)
- {
- for (j=0; j<bmd.height; j++)
- {
- c = bmd.getPixel32(i, j);
- if (!c) continue;
- p = _inactiveParticles.length ? _inactiveParticles.shift() : new Particle();
- angle = Math.random() * Math.PI * 2;
- strength = Math.random() * 20;
- p.vx = Math.cos(angle) * strength;
- p.vy = Math.sin(angle) * strength;
- p.x = cx + i;
- p.y = cy + j;
- p.color = c;
- p.life = 200;
- _activeParticles.push(p);
- }
- }
- bmd.dispose();
- }
- }
- }
- class Particle
- {
- public var vx:Number;
- public var vy:Number;
- public var x:Number;
- public var y:Number;
- public var color:uint;
- public var life:uint;
- }
- 出題者からのコメント
- パァン!って感じだわ。頭がパァーーン!って感じ。
- Comments from King
- Pang! Feeling like sound of "Pang" in my head.








