- 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
