リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ 音量スイッチサンプル

ActionScript

音量スイッチサンプル

音量スイッチ(ボリュームスライダ)のサンプル。

JavaScriptを有効にし、最新のFlashPlayerをインストールお願いしますGet Adobe Flash player

ソースのダウンロード(fla)


AS3 アクションフレーム

//---------------------------------------------------------------音量調整方法概要
//マウスプレス----トリガー
//ゆっくりタイマ-----マウスプレス位置に近づきながら音合わせ
//高速タイマ-----マウスの動きに合せて位置と音合わせ
//マウスアウト----全てタイマをリセットし、位置と音合わせ

tumami_mc.x = 0;//つまみ初期位置
hit_mc.buttonMode = true;

//マウスチェック
var mouseC:int = 0;//0→無し 1→プレス状態
var asobi:int = 10;//スライダの片側遊び長さ
var sLeng:int = 50;//スライダ幅
var mSpeed:Number = 0.6;//カーソール移動スピード
var vol:Number = 0;//ボリューム0〜1.0
var my_st:SoundTransform = new SoundTransform(vol,0);//ボリューム0

//初期ボリューム設定
SoundMixer.soundTransform = my_st;

//トリガー設定
hit_mc.addEventListener(MouseEvent.MOUSE_DOWN,hitDown);//プレス
hit_mc.addEventListener(MouseEvent.MOUSE_UP,hitOff);//マウスアップされたら
hit_mc.addEventListener(MouseEvent.MOUSE_OUT,hitOff);//ヒットエリアから離れたら

//ゆっくりタイマ設定
var m_timer:Timer= new Timer(1000*0.02,4);//0.02秒4回 =0.1秒
m_timer.addEventListener(TimerEvent.TIMER,m_timer_f);
m_timer.addEventListener(TimerEvent.TIMER_COMPLETE,m_timer_c_f);

//高速タイマ設定
var down_timer:Timer= new Timer(1000*0.01);//0.01秒ごとに実行 リセット忘れ注意
down_timer.addEventListener(TimerEvent.TIMER,down_timer_f);

//マウスが押されたら
function hitDown(event:MouseEvent):void {
	mouseC = 1;//プレス中
	tumami_mc.gotoAndPlay("On");
	m_timer.start();
}

//ゆっくりタイマ実行
function m_timer_f(e:TimerEvent):void {
	if(mouseC == 1){
		//位置合わせ
		if (hit_mc.mouseX <= 0) {//min側 遊び範囲なら
			tumami_mc.x += (0-tumami_mc.x)*mSpeed;
		
		} else if (hit_mc.mouseX >= sLeng) {//max側 遊び範囲なら
			tumami_mc.x += (sLeng-tumami_mc.x)*mSpeed;
		} else {//移動範囲なら
			tumami_mc.x += (hit_mc.mouseX-tumami_mc.x)*mSpeed;
		}
		e.updateAfterEvent();
		
		//ボリューム合わせ
		vol = tumami_mc.x / sLeng;
		my_st = new SoundTransform(vol,0);
		SoundMixer.soundTransform = my_st;
	}else{
		m_timer.reset();
	}
}

//ゆっくりタイマ終了
function m_timer_c_f(e:TimerEvent):void {
	if(mouseC == 1){
		//位置合わせ
		if (hit_mc.mouseX <= 0) {//min側 遊び範囲なら
			tumami_mc.x = 0;
		} else if (hit_mc.mouseX >= sLeng) {//max側 遊び範囲なら
			tumami_mc.x = sLeng;
		} else {//移動範囲なら
			tumami_mc.x = hit_mc.mouseX;
		}
		e.updateAfterEvent();
		
		//ボリューム合わせ
		vol = tumami_mc.x / sLeng;
		my_st = new SoundTransform(vol,0);
		SoundMixer.soundTransform = my_st;
		
		//高速タイマ起動
		down_timer.start();
	}else{
		m_timer.reset();
	}
}


//高速タイマ
function down_timer_f(e:TimerEvent):void {
	if(mouseC == 1){
		//位置合わせ
		if (hit_mc.mouseX <= 0) {//min側 遊び範囲なら
			tumami_mc.x = 0;
		} else if (hit_mc.mouseX >= sLeng) {//max側 遊び範囲なら
			tumami_mc.x = sLeng;
		} else {//移動範囲なら
			tumami_mc.x = hit_mc.mouseX;
		}
		e.updateAfterEvent();
		
		//ボリューム合わせ
		vol = tumami_mc.x / sLeng;
		my_st = new SoundTransform(vol,0);
		SoundMixer.soundTransform = my_st;
	}else{
		down_timer.reset();
	}
}

//マウスアウト
function hitOff(event:MouseEvent):void {
	if (mouseC == 1) {
		mouseC = 0;
		tumami_mc.gotoAndPlay("Off");
		m_timer.reset();
		down_timer.reset();
		
		//位置合わせ
		if (hit_mc.mouseX <= 0) {//min側 遊び範囲なら
			tumami_mc.x = 0;
		} else if (hit_mc.mouseX >= sLeng) {//max側 遊び範囲なら
			tumami_mc.x = sLeng;
		} else {//移動範囲なら
			tumami_mc.x = hit_mc.mouseX;
		}
		event.updateAfterEvent();
		
		//ボリューム合わせ
		vol = tumami_mc.x / sLeng;
		my_st = new SoundTransform(vol,0);
		SoundMixer.soundTransform = my_st;
	}
}
last update 2010.3.15
参考・出典等
「特に無し」

▲page top

topmemogalleryblogtestaboutlinksmail
Copylight(C)2008-2010 Riptac. All Rights Reserved.