Forked from: minon's さらにゆらゆら~ diff:9 光と影のゆらゆら~ 陰影つけてみた * いっかしょ計算があわへんところがある、あと、ラインを消すと微妙な隙間が出来る * @author minon minon forked:1favorite:0lines:82license : All rights reserved modified : 2009-02-28 02:42:15 Embed Tweet // forked from minon's さらにゆらゆら~ // forked from minon's ゆらゆら~ // forked from minon's なんだかちょっと旗っぽい // forked from minon's なみなみ /** * 陰影つけてみた * いっかしょ計算があわへんところがある、あと、ラインを消すと微妙な隙間が出来る * @author minon */ package { import flash.display.*; import flash.events.Event; import flash.geom.*; import flash.net.URLRequest; import flash.system.LoaderContext; import flash.text.TextField; import flash.utils.getTimer; [SWF (width="465",height="465",frameRate="60",backgroundColor="#000000")] public class FlashTest extends Sprite { public var _outline:Sprite; public var _canvas:Bitmap; public var _n:int = 20; public var _l:int = 320; public var _t:Number = 0; public var _pArray:Array = []; public var _bitmapdata:BitmapData; public function FlashTest() { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener( Event.COMPLETE, this.init ); loader.load( new URLRequest("http://labs.minomix.net/img/minon.jpg"), new LoaderContext(true) ); } public function init(e:Event):void { var loader:Loader = LoaderInfo( e.target ).loader; _bitmapdata = Bitmap( loader.content ).bitmapData; this.addChild( _canvas = new Bitmap( new BitmapData( 465, 465, true, 0x00FF0000 ) ) ); this.addChild( _outline = new Sprite() ); var u:Number = _bitmapdata.width / _n; for ( var i:int = 0 ; i < _n ; i++ ) { var bmp:BitmapData = new BitmapData(u, _bitmapdata.height); bmp.copyPixels( _bitmapdata, new Rectangle( u * i, 0, u, _bitmapdata.height ), new Point() ); _pArray.push( new pt( _l / _n * i + 50, 50, bmp ) ); } this.addEventListener( Event.ENTER_FRAME, update ); this.addEventListener( Event.ENTER_FRAME, render ); } private function update(e:Event):void { _t += 0.1 var p:pt; for ( var i:int = 0 ; i < _pArray.length ; i++ ) { p = _pArray[i]; p.y = p.yy + Math.sin( i*0.5 - _t ) * ( 8 * ( i / _pArray.length ) * 3 ); p.x = p.xx + Math.sin( i*0.5 - _t ) * ( 8 * ( i / _pArray.length ) ); } } public function render(e:Event):void { _outline.graphics.clear(); _outline.graphics.lineStyle( 2, 0xFF0000 ); var h:int = 320; var p:pt; var p2:pt; _canvas.bitmapData = new BitmapData( 465, 465, true, 0x00FF0000 ); for ( var i:int = 0 ; i < _pArray.length-1 ; i++ ) { p = _pArray[i]; p2 = _pArray[i + 1]; var mtx:Matrix = new Matrix( ( p2.x - p.x ) / p.bmp.width, ( p2.y - p.y ) * ( p.bmp.height / h ), 0, h / p.bmp.height, p.x, p.y); var a:Number = p.y - p.yy; var ct:ColorTransform = new ColorTransform(); ct.redOffset = ct.greenOffset = ct.blueOffset = -a*5; _canvas.bitmapData.draw( p.bmp, mtx, ct, null, null, true ); _outline.graphics.moveTo( p.x, p.y ); _outline.graphics.lineTo( p2.x, p2.y ); _outline.graphics.lineTo( p2.x, p2.y+h ); _outline.graphics.lineTo( p.x, p.y+h ); _outline.graphics.lineTo( p.x, p.y ); } } } } import flash.display.*; class pt { public var x:Number; public var y:Number; public var xx:Number; public var yy:Number; public var bmp:BitmapData; public function pt( _x:Number = 0, _y:Number = 0, _bmp:BitmapData = null ) { this.xx = this.x = _x; this.yy = this.y = _y; bmp = _bmp; } } Code Fullscreen Preview Fullscreen height loader greenOffset redOffset blueOffset content lineTo Loader target Event.COMPLETE copyPixels width addEventListener bitmapData clear load length Rectangle URLRequest ColorTransform sort new page view favorite forked pv4127 それっぽくなったゆらゆらの旗 minon forked:7 favorite:10lines:83 (diff:37) tag: flag motion