web,direction,planning,graphicdesign

2009年5月20日水曜日

ActionScript ムビークリップをイージングをかけて移動させる

例)A_mcを移動させる。


package{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;

public class MoveStr extends Sprite {
// コンストラクタ
public function MoveStr() {
// フレームが再生されるたびにenterFrameHandlerを実行
A_mc.addEventListener( Event.ENTER_FRAME, enterFrameHandler );
}

// 毎フレーム実行する
private function enterFrameHandler( evt:Event ):void{
//ターゲットのムービークリップを取得する
var mc:MovieClip = evt.target as MovieClip;
//終点の設定
var goalx:Number = 500;
//ムービークリップの位置設定
moveStr(mc,goalx);
}

//ムービークリップの位置設定
private function moveStr( targetmc:MovieClip, goalx:Number ):void{
if ( Math.abs(goalx-targetmc.x )<10){
//スナップ処理
targetmc.x = goalx;
//イベントリスナー削除
targetmc.removeEventListener( Event.ENTER_FRAME, enterFrameHandler );
} else {
//x座標を設定
var easing:Number = 0.15;
//イージングでx座標を設定
targetmc.x +=( goalx - targetmc.x ) * easing;
}
}
}
}

ActionScript ドキュメントクラス

ドキュメントクラスとは,SWFファイルに関連づけられるトップクラスの事。
ドキュメントクラスには、任意のカスタムクラスを設定する事が出来る。

Flash Player でSWFがロードされたときに、特にnew演算子を使うことなく、自動的にこのクラスのインスタンスが作成され、コンストラクタが呼び出される。

〈設定方法〉

flaファイルの空白領域をクリックして、ステージとタイムラインのすべてのオブジェクトの選択を解除すると、プロパティインスペクタに「ドキュメントプロパティ」が表示される。プロパティインスペクタの「ドキュメントクラス」テキストボックスに、クラス名(パッケージを背呈している場合は、クラスパスとクラス名)を入力


例)線が描かれていく

RandomLine.asにRandomLineクラスを作成していく。RandomLineクラスにはSpirteクラス(表示オブジェクト、表示オブジェクトコンテナでもあるというコアクラス)を継承する(extends)。

RandomLine.as

package {
import flash.display.Sprite;
import flash.events.Event;

public class RandomLine extends Sprite {
// 描画した線をカウントする変数
private var count:int = 0;

//コンストラクタ
public function RandomLine(){
//線のスタイル
this.graphics.lineStyle(1,0xFF358B);
//ステージの中心から描き始める
this.graphics.moveTo(this.stage.stageWidth/2,this.stage.stageHeight/2);
//フレームが再生されるたびにenterFrameHandlerを実行
this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}
private function enterFrameHandler(evt:Event):void{
//ランダムに線を描く
if (count<1000){
//ランダムに座標を設定
var xx:int = Math.random() * this.stage.stageWidth;
var yy:int = Math.random() * this.stage.stageHeight;
//線を描く
this.graphics.lineTo(xx,yy);
//描画した線をカウントする
count++;
}else{
//イベントリスナーを削除
this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
}
}
}
}

フォロワー