※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!
wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)
forked from: な~るほど ザ!ワ… forked from: forked from: な~るほど ザ!ワ…
- // forked from midisheep's forked from: な~るほど ザ!ワ…
- // forked from katapad's な~るほど ザ!ワ…
- // forked from katapad's おまえの母ちゃん…
- package
- {
- import caurina.transitions.Tweener;
- import flash.display.*;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.filters.BlurFilter;
- import flash.geom.Matrix;
- import flash.geom.Point;
- import flash.geom.Rectangle;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFormat;
- [SWF(width="465", height="465", backgroundColor="0x000000", frameRate="60")]
- /**
- * ...
- * @author katapad
- * @version 0.2
- * @since 2008/12/23 23:55
- */
- public class LEDSignMainNaruhodo extends Sprite
- {
- //----------------------------------
- // static var/const
- //----------------------------------
- //public static const DEBUG_MOODE:Boolean = true;
- public static const DEBUG_MOODE:Boolean = false;
- public static const STAGE_WIDTH:uint = 465;
- public static const STAGE_HEIGHT:uint = 465;
- public static const LED_CONTAINER_WIDTH:uint = 464;
- public static const LED_CONTAINER_HEIGHT:uint = 464;
- public static const LED_MARGIN:uint = 2;
- public static const LED_RADIUS:uint = 3;
- public static const ROWS:uint = 15;
- public static const ANIMATION_SPEED:Number = 0.02;
- private static const DEFAULT_TEXTFORMAT:TextFormat = new TextFormat("_等幅", 12, 0xFFFFFF, false);
- //----------------------------------
- // instance var
- //----------------------------------
- private var _ledContainer:Sprite;
- private var _ledList:Array;
- private var _canvas:Sprite;
- private var _canvasDrawBM:BitmapData;
- private var _resetBMRect:Rectangle;
- private var _drawMatrix:Matrix = new Matrix();
- private var _tfList:/*TextField*/Array;
- private var _square:Shape;
- private var _words:Array = ["な~る!", "ワカメ酒!"];
- private var _cols:uint;
- public function LEDSignMainNaruhodo()
- {
- init();
- updateOn();
- animationStart();
- }
- private function init():void
- {
- _cols = Math.floor((LED_CONTAINER_WIDTH - 2 * LED_MARGIN) / (LED_RADIUS * 2 /*+ LED.OFF_GLOW_FILTER.blurX */+ LED_MARGIN))
- _resetBMRect = new Rectangle(0, 0, _cols, ROWS);
- initStage();
- initLEDs();
- initCanvas();
- }
- private function initCanvas():void
- {
- _canvas = new Sprite();
- _canvasDrawBM = new BitmapData(_cols, ROWS, true, 0x000000);
- _drawMatrix.translate(0, -2);
- createText();
- createSquare();
- _ledContainer.y = stage.stageHeight * 0.5 - _ledContainer.height * 0.5 ;
- //デバッグ確認用
- if (DEBUG_MOODE)
- {
- addChild(_canvas);
- _canvas.y = 420;
- var bm:Bitmap = new Bitmap(_canvasDrawBM);
- addChild(bm);
- bm.y = 300;
- }
- }
- private function createSquare():void
- {
- _square = new Shape();
- _square.y = 2;
- _canvas.addChild(_square);
- _square.graphics.beginFill(0xFFFFFF, 1.0);
- _square.graphics.drawRect(0, 0, _cols, ROWS);
- _square.graphics.endFill();
- _square.blendMode = BlendMode.INVERT;
- }
- private function createText():void
- {
- _tfList = [];
- for (var i:int = 0, n:int = _words.length; i < n; i++)
- {
- var tf:TextField = _canvas.addChild(new TextField()) as TextField;
- tf.defaultTextFormat = DEFAULT_TEXTFORMAT;
- tf.autoSize = TextFieldAutoSize.LEFT;
- tf.text = _words[i];
- tf.y = 2;
- _tfList[i] = tf;
- }
- }
- private function initStage():void
- {
- //stage.align = StageAlign.TOP_LEFT;
- //stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.quality = StageQuality.HIGH;
- var stageBg:Shape = addChild(new Shape()) as Shape;
- stageBg.graphics.lineStyle(1, 0xcccccc);
- stageBg.graphics.drawRect(0, 0, STAGE_WIDTH, STAGE_HEIGHT);
- }
- private function initLEDs():void
- {
- _ledList = [];
- _ledContainer = new Sprite();
- addChild(_ledContainer);
- var space:uint = LED_RADIUS * 2/* + LED.OFF_GLOW_FILTER.blurX*/ + LED_MARGIN;
- for (var i:int = 0; i < ROWS * _cols; i++)
- {
- var led:LED = _ledContainer.addChild(LEDFactory.create(LED_RADIUS)) as LED;
- led.x = (i % _cols) * space + LED_MARGIN;
- led.y = Math.floor(i / _cols) * space + space;
- _ledList[i] = led;
- }
- }
- private function updateOn():void
- {
- addEventListener(Event.ENTER_FRAME, update);
- }
- private function update(event:Event):void
- {
- render();
- }
- private function render():void
- {
- _canvasDrawBM.fillRect(_resetBMRect, 0);
- _canvasDrawBM.draw(_canvas, _drawMatrix);
- _canvasDrawBM.threshold(_canvasDrawBM, _canvasDrawBM.rect, new Point(), "<", 0x808080, 0);
- for (var i:int = 0, n:int = _ledList.length; i < n; i++)
- {
- var color:uint = _canvasDrawBM.getPixel((i % _cols), Math.floor(i / _cols));
- if (color == 0)
- LED(_ledList[i]).lightOn()
- else
- LED(_ledList[i]).lightOff()
- }
- }
- /**
- * アニメーション
- */
- private function animationStart():void
- {
- initPos();
- var delayTime:Number = 0;
- var animTime:Number;
- var speed:Number = ANIMATION_SPEED;
- for (var i:int = 0, n:int = _tfList.length; i < n; i++)
- {
- var tf:TextField = _tfList[i];
- animTime = LEDAnimation.getTFAnimTime(tf.x, -tf.textWidth - 1, speed);
- //フリ
- if (i != n -1)
- {
- delayTime = LEDAnimation.slide(tf, -tf.textWidth - 2, delayTime, animTime);
- }
- //オチ
- else
- {
- delayTime -= 0.8;
- var cx:Number = Math.round((_cols - tf.textWidth) * 0.5);
- animTime = LEDAnimation.getTFAnimTime(tf.x, -cx - 1, speed);
- delayTime = LEDAnimation.slide(tf, cx, delayTime, animTime);
- delayTime += 1.0;
- for (var j:int = 0; j < 4; j++)
- {
- delayTime = LEDAnimation.blink(_square, delayTime);
- }
- delayTime = LEDAnimation.slide(tf, -tf.textWidth - 2, delayTime + 0.5, LEDAnimation.getTFAnimTime(cx, -tf.textWidth - 1, speed));
- }
- }
- Tweener.addCaller(this, { time: 0.0, delay: delayTime + 2.0, count: 1, onUpdate: animationStart } );
- }
- private function initPos():void
- {
- _square.visible = false;
- for (var i:int = 0, n:int = _tfList.length; i < n; i++)
- {
- _tfList[i].x = _cols * 1.5;
- }
- }
- }
- }
- import caurina.transitions.Tweener;
- class LEDAnimation
- {
- function LEDAnimation()
- {
- }
- public static function blink(target:DisplayObject, delayTime:Number, blinkTime:Number = 0.2):Number
- {
- Tweener.addTween(target, { visible: true, time: 0.0, delay: delayTime += blinkTime, transition: "linear" } );
- Tweener.addTween(target, { visible: false, time: 0.0, delay: delayTime += blinkTime, transition: "linear" } );
- return delayTime;
- }
- public static function slide(target:DisplayObject, destX:Number, delayTime:Number, animTime:Number):Number
- {
- Tweener.addTween(target, { x: destX, time: animTime, delay: delayTime, transition: "linear" } );
- return delayTime + animTime;
- }
- public static function getTFAnimTime(startX:Number, destX:Number, friction:Number = 0.1):Number
- {
- return Math.abs((startX - destX) * friction);
- }
- }
- import flash.display.*;
- import flash.filters.BlurFilter;
- import flash.filters.GlowFilter;
- import flash.geom.ColorTransform;
- import flash.geom.Matrix;
- class LED extends Bitmap
- {
- public static const ON_COLOR:uint = 0xE9C20E;
- public static const OFF_COLOR:uint = 0x454221;
- public static const ON_GLOW_FILTER:GlowFilter = new GlowFilter(ON_COLOR, 1.0, 4, 4, 1, 2);
- public static const ON_INNER_GLOW_FILTER:GlowFilter = new GlowFilter(0xFFFFFF, 0.8, 4, 4, 1, 2, true);
- public static const ON_COLOR_FILTER:ColorTransform = new ColorTransform(0, 0, 0, 1.0, 69, 66, 33);
- public static const OFF_GLOW_FILTER:GlowFilter = new GlowFilter(OFF_COLOR, 1.0, 4, 4, 1, 2);
- public static const OFF_INNER_GLOW_FILTER:GlowFilter = new GlowFilter(0xFFFFFF, 0.5, 2, 2, 1, 2, true);
- public static const OFF_COLOR_FILTER:ColorTransform = new ColorTransform();
- private static var _onBM:BitmapData;
- private static var _offBM:BitmapData;
- public function LED()
- {
- init();
- }
- private function init():void
- {
- this.bitmapData = LED._offBM;
- }
- public function lightOn():void
- {
- this.bitmapData = LED._onBM;
- }
- public function lightOff():void
- {
- this.bitmapData = LED._offBM;
- }
- public static function set onBM(value:BitmapData):void
- {
- _onBM = value;
- }
- public static function set offBM(value:BitmapData):void
- {
- _offBM = value;
- }
- }
- class LEDFactory
- {
- private static var _isCached:Boolean = false;
- public function LEDFactory(){}
- public static function create(radius:Number = 5):LED
- {
- if (!_isCached)
- {
- initCache(radius);
- }
- return new LED();
- }
- private static function initCache(radius:Number):void
- {
- LED.onBM = createBM(radius, LED.ON_COLOR, [LED.ON_GLOW_FILTER, LED.ON_INNER_GLOW_FILTER], LED.ON_COLOR_FILTER);
- LED.offBM = createBM(radius, LED.OFF_COLOR, [LED.OFF_GLOW_FILTER, LED.OFF_INNER_GLOW_FILTER], LED.OFF_COLOR_FILTER);
- _isCached = true;
- }
- private static function createBM(radius:Number, color:uint, filters:Array, colortrans:ColorTransform):BitmapData
- {
- var shape:Shape = new Shape();
- shape.graphics.beginFill(color);
- shape.graphics.drawCircle(radius, radius, radius);
- shape.graphics.endFill();
- shape.filters = filters;
- shape.transform.colorTransform = colortrans;
- var result:BitmapData = new BitmapData(shape.width + 4, shape.height + 4, true, 0x000000);
- var mtx:Matrix = new Matrix();
- mtx.translate(2, 2);
- result.draw(shape, mtx);
- return result;
- }
- }
notice:



