In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

漫画っぽい吹き出し

激しい吹き出し
* イマイチ、非常に残念な感じ
* 
* クリックでアニメーションストップ
Get Adobe Flash player
by minon 29 May 2009
/**
 * Copyright minon ( http://wonderfl.net/user/minon )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/cgLl
 */

/**
 * 激しい吹き出し
 * イマイチ、非常に残念な感じ
 * 
 * クリックでアニメーションストップ
 */
package  {
	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.text.TextFormatAlign;
	
	[SWF(width="465",height="465",frameRate="20",backgroundColor="0xFFFFFF")]
	
	/**
	 * ...
	 * @author minon
	 */
	public class Balloon extends Sprite {
		
		private var _container:Sprite;
		private var _isPlaying:Boolean = true;
		
		public function Balloon() {
			
			_container = new Sprite();
			this.addChild( _container );
			
			var txt:TextField = new TextField();
			txt.autoSize = TextFieldAutoSize.LEFT;
			var tf:TextFormat = new TextFormat();
			tf.align = TextFormatAlign.CENTER;
			tf.size = 24;
			txt.defaultTextFormat = tf;
			txt.text = "早く帰りたい!";
			txt.x = ( stage.width - txt.width ) / 2 + 237.5;
			txt.y = ( stage.height - txt.height ) / 2 + 237.5;
			this.addChild( txt );
			
			stage.addEventListener(MouseEvent.CLICK, _change );
			stage.addEventListener(Event.ENTER_FRAME, _render );
			
		}
		
		private function _change(e:Event):void {
			
			if ( _isPlaying ) {
				stage.removeEventListener(Event.ENTER_FRAME, _render );
				_isPlaying = false;
			}
			else {
				stage.addEventListener(Event.ENTER_FRAME, _render );
				_isPlaying = true;
			}
		}
		
		private function _render(e:Event):void {
			
			var g:Graphics = _container.graphics;
			g.clear();
			_drawBalloon( g );
		}
		
		private function _drawBalloon( g:Graphics ):void {
			
			var outAry:Array = [];
			var inAry:Array = [];
			
			var a:int = 20;
			var len:int = 160;
			var lv:int;
			
			var d:int = 360 + Math.random() * 5;
			while ( d > a/2 ) {
				
				var n:Number = Math.sin( d / 10 ) * 4;
				
				lv = len + Math.random() * 60 + n * 3;
				var x:Number = Math.sin( d * Math.PI / 180 ) * lv + 230;
				var y:Number = Math.cos( d * Math.PI / 180 ) * lv + 230;
				
				lv = 60;
				var x2:Number = Math.sin( ( d + ad/2 ) * Math.PI / 180 ) * lv + 230;
				var y2:Number = Math.cos( ( d + ad/2 ) * Math.PI / 180 ) * lv + 230;
				
				outAry.push( new Point( x, y ) );
				inAry.push( new Point( x2, y2 ) );
				
				var ad:int = Math.random() * n + a / 2;
				
				d -= ad
				
			}
			
			g.lineStyle( 4, 0 );
			g.moveTo( outAry[0].x, outAry[0].y );
			for ( var i:int = 1 ; i < outAry.length ; i++ ) {
				g.curveTo( inAry[i].x, inAry[i].y, outAry[i].x, outAry[i].y );
				
			}
			g.curveTo( inAry[0].x, inAry[0].y, outAry[0].x, outAry[0].y );
			
		}
		
	}
	
}