Forked from: miyaoka 's tweenMoyou diff:77 hazumuMoyou import caurina.transitions.Tweener; miyaoka forked:0 favorite:0 lines:153 license : MIT License modified : 2008-12-23 01:33:59 // forked from miyaoka's tweenMoyou // forked from miyaoka's moyou package { import flash.display.Sprite; import flash.events.MouseEvent; //import caurina.transitions.Tweener; import flash.events.Event; public class Main extends Sprite { private var bgColors:Array = [0xFFFFFF, 0x000000]; private var bgColorIdx:uint = 0; //public var tweenMouseX:Number = mouseX; //public var tweenMouseY:Number = mouseY; public var mover:Mover; public function Main():void { setShapes(); stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseClickHandler); // stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); mover = new Mover(); mover.x = stage.stageWidth * 0.5; mover.y = stage.stageHeight * 0.5; mover.randJump(); } private function enterFrameHandler(evt:Event):void { mover.update(); if (mover.x < 0) { mover.reflectX( mover.x); } else if (mover.x > stage.stageWidth) { mover.reflectX(mover.x - stage.stageWidth); } if (mover.y > stage.stageHeight) { mover.reflectY(mover.y - stage.stageHeight); } var e:MouseTweenEvent = new MouseTweenEvent(MouseTweenEvent.UPDATE); e.mouseX = mover.x; e.mouseY = mover.y; dispatchEvent(e); } private function mouseClickHandler(evt:MouseEvent):void { mover.randJump(); setShapes(); } /* private function mouseMoveHandler(evt:MouseEvent):void { Tweener.removeAllTweens(); Tweener.addTween(this, { tweenMouseX: mouseX, tweenMouseY: mouseY, time:0.5, transition:"easeOutCubic", onUpdate:mouseTweenUpdateHandler }); }*/ /* private function mouseTweenUpdateHandler():void { var evt:MouseTweenEvent = new MouseTweenEvent(MouseTweenEvent.UPDATE); evt.mouseX = tweenMouseX; evt.mouseY = tweenMouseY; dispatchEvent(evt); }*/ private function setShapes():void { graphics.clear(); graphics.beginFill(bgColors[bgColorIdx]); graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); graphics.endFill(); bgColorIdx = ++bgColorIdx % bgColors.length; while(0 < numChildren) removeChildAt(0); var c:uint; var r:uint; var rot:uint; var size:Number = 25 * (Math.random() + 0.5); var filterStrength:Number = Math.random() * 5 + 1; var center:Number = (Math.random() * 2 - 1) * size * 0.5; var col:uint = Math.ceil(stage.stageWidth / size) + 1; var row:uint = Math.ceil(stage.stageHeight / size * 0.5) + 1; for (c = 0; c < col; c++) { for (r = 0; r < row; r++) { var spX:Number = size * c; var spY:Number = size * 2 * (r + c % 2 * 0.5); for (rot = 0; rot < 4; rot++) { var sp:Shape = new Shape(this, size, center,center, filterStrength); sp.rotation = 90 * rot; sp.x = spX; sp.y = spY; } } } } } } class Mover { public var x:Number = 0; public var y:Number = 0; public var moveX:Number = 0; public var moveY:Number = 0; public static var GRAV:Number = 1; public function update():void { x += moveX; y += moveY; moveY += GRAV; trace(x) trace(y) } public function reflectX(x_:Number):void { x -= x_ * 1.5; moveX *= -0.9; } public function reflectY(y_:Number):void { y -= y_ * 1.5; moveY *= -0.85; } public function randJump():void { moveY = -(Math.random() * 10 +20); moveX = (Math.random() * 30 + 5) * ((Math.random() < 0.5)? 1 : -1) } } import flash.display.DisplayObjectContainer; import flash.display.Sprite //import flash.events.MouseEvent; import flash.geom.Point; import flash.filters.GlowFilter; import flash.filters.BitmapFilterQuality; class Shape extends Sprite { private var size:Number; public function Shape(parent_:DisplayObjectContainer, size_:Number = 25, centerX:Number = 0, centerY:Number = 0, filterStrength:Number = 1 ):void { parent_.addChild(this); // stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, false, 0, true); parent_.addEventListener(MouseTweenEvent.UPDATE, mouseTweenHandler, false, 0, true); size = size_; var color:Number = Math.random() * 0xFFFFFF; //var alpha:Number = 1; //var blurX:Number = size * 0.5; //var blurY:Number = size * 0.5; //var strength:Number = filterStrength; //var inner:Boolean = false; //var knockout:Boolean = false; //var quality:Number = BitmapFilterQuality.LOW; // //filters = new Array(new GlowFilter(color, //alpha, //blurX, //blurY, //strength, //quality, //inner, //knockout)); graphics.beginFill(color); graphics.moveTo(size / 2 - centerX, 0 - centerY); graphics.curveTo(size - centerX, 0 - centerY, size/2 - centerX, size/2 - centerY); graphics.curveTo(0 - centerX, size - centerY, 0 - centerX, size/2 - centerY); graphics.curveTo(0 - centerX, 0 - centerY, size/2 - centerX, 0 - centerY); graphics.endFill(); } //private function mouseMoveHandler(evt:MouseEvent):void //{ // //} private function mouseTweenHandler(evt:MouseTweenEvent):void { scaleUpdate(evt.mouseX -x, evt.mouseY - y); } private function scaleUpdate(mouseX_:Number, mouseY_:Number):void { scaleX = scaleY = Math.min(5, Math.sqrt(size / Point.distance(new Point(), new Point(mouseX_, mouseY_)))* 2); } } import flash.events.Event class MouseTweenEvent extends Event { public static const UPDATE:String = "update"; public var mouseX:Number; public var mouseY:Number; public function MouseTweenEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); } } Code Fullscreen Preview Fullscreen cancelable bubbles type Math.ceil removeChildAt trace numChildren rotation Point.distance dispatchEvent mouseY mouseX Math.random scaleY scaleX Boolean Math.min Math.sqrt addEventListener addChild