• Date:2010/2/2
  • Category:AS3.0
  • Author: wonder

ぼちぼちとAS3.0の勉強を進めています。
実際にFlashを作成するときにローディング用のアイコンって使いますよね。
いちいち探すのもめんどくさかったので作りました。

LoadingIcon

package classes
{
	/**
	 * ローディングアイコン生成クラス
	 * @author Takuya Fujimi
	 */
	import flash.display.Sprite;
	import flash.events.Event;

	public class LoaderIcon extends Sprite
	{
		/* デフォルト設定 */
		private var obj:Object = {
			width: 2,
			height: 5,
			color: 0X000000,
			num: 12,
			radius: 5
		};

		/* コンストラクタ */
		public function LoaderIcon( ...arg:Array )
		{
			for ( var item:Object in arg[0] ) {
				obj[item] = arg[0][item];
			}
			for (var i:int = 0; i < obj.num; i++ ) {
				createRect( i );
			}
			addEventListener(Event.ENTER_FRAME, boxRotation);
		}

		/* 図形の描画 */
		private function createRect( i:int ):void {
			var posX:Number = obj.radius * Math.sin(Math.PI * 2 * i / obj.num);
			var posY:Number = obj.radius * Math.cos(Math.PI * 2 * i / obj.num);

			var box:Sprite = new Sprite();
			box.graphics.beginFill( obj.color );
			box.graphics.drawRect( obj.x / -2, 0, obj.width, obj.height );
			box.graphics.endFill();
			box.rotation = 360 - ( i * 360 / obj.num );
			box.alpha = 1 - (1 / obj.num * i);
			box.x = posX;
			box.y = posY;
			addChild( box );
		}

		/* 回転 */
		private function boxRotation(e:Event):void {
			rotation += 360 / obj.num;
		}

		/* アイコンを削除 */
		public function deleteIcon():void {
			var parentObj:Object = Object(parent);
			parentObj.removeChild( this );
		}

	}

}

使用方法

使い方はクラスを初期化してステージに配置するだけ。

var icon:LoadingIcon = new LoadingIcon();
addChild( icon );

ですね。
デフォルトのままで良ければこれで終わり。
それに加えて、引数にオブジェクトを渡すことで数値を変更できるようにしました。

var obj:Object = { radius: 20, color: 0Xcc0000 };
var icon:LoadingIcon = new LoadingIcon( obj );
addChild( icon );

こうすることで、いろいろな大きさや色のローディングアイコンを生成することができます。
変更できる数値は

※以下すべて、ローディングアイコン用に使用している図形に対する数値です。

width: 図形の幅
hieght: 図形の高さ
color: 図形の色
num: 図形の数
radius: 回転する半径

となります。

あとは、念のためアイコンを削除するメソッドもつけています。
配置したアイコンを削除したい場合は、アイコンのインスタンスからメソッドを実行します。

icon.deleteIcon();

これで、どこに配置しようが削除できます。

デモ

Name
Comment

To pagetop


wonder_boys

wonder
Webデザイナー兼マークアップエンジニア。 静岡県浜松市在住。

RSS Entries

RSS Comments

Sponsored

Entries

Archive

Categories

Tags

まとめ アクセシビリティ イベント イベントリスナー オブジェクト オライリー バグ マイクロフォーマット マークアップ ユーザビリティ レビュー 引数 携帯サイト 正規表現 画像 目標 管理画面 背景 設定 alt AS3.0 Bitmap canvas content css DataGrid dreamweaver Flex form HTML html5 IK iphone javascript meta middle PHP png SGML SVG table wordpress XHTML XML

Links

킹ēǂ݂uOp[c