2007/12/28
FuseでSoundをトゥーンできるようにする。
ポスト @ 14:43:18 | ActionScript
最近やっと慣れてきたFuse kit(え、まだAs2なのかって? はいそうです。。) せっかくなのでSoundオブジェクト(ボリューム、パン)をいじれるようにしました。
FuseKitはプロパティーしかトゥイーンできないので、それを付加します。
やり方は2種類
1)Soundオブジェクトのプロトタイプにぶち込む 2)Soundオブジェクトをextendsして、新しいクラスを作る。
やり方としては2の方が正攻法でしょう。 しかし、お手軽さとしてはやっぱり1は捨てきれません。
1)の場合だと以下で操作。
SoundEntends.as
import com.mosesSupposes.fuse.*
var so = Sound.prototype;
so.addProperty("volume",so.getVolume,so.setVolume);
so.addProperty("pan",so.getPan,so.setPan);
so.fadeIn = function(time:Number, ease:Object, delay:Number, func:Object){
ZigoEngine.doTween(this,"volume",100,time,ease,delay,func);
}
so.fadeOut = function(time:Number, ease:Object, delay:Number, func:Object){
ZigoEngine.doTween(this,"volume",0,time,ease,delay,func);
}
so.fadeTo = function(vol:Number, time:Number, ease:Object, delay:Number, func:Object){
ZigoEngine.doTween(this,"volume",vol,time,ease,delay,func);
}
delete so;
これをflaファイルと同レベル又はflashのConfiguration/includeなどに入れて
flaファイルの一行目に
#include"SoundEntends.as"
これだと外部asに書いたときにコンパイルエラーが出るので、さらにConfiguration/Classes内のSound.as(実際には各バージョンの中のFP[7~9])に
var volume:Number;
var pan:Number;
を追加しなくてはいけません。
となるとやっぱり
import com.mosesSupposes.fuse.*
class SoundExtends extends Sound{
public function SoundExtends( target ){
super( target );
}
public function get volume():Number{
return getVolume();
}
public function set volume( num:Number ):Void{
setVolume( num );
}
public function get pan():Number{
return getPan();
}
public function set pan( num:Number ):Void{
setPan( num );
}
public function fadeTo(val:Number, time:Number, ease:Object, delay:Number, func:Object):Void{
ZigoEngine.doTween(this,"volume",val,time,ease,delay,func);
}
public function fadeIn(time:Number, ease:Object, delay:Number, func:Object):Void{
ZigoEngine.doTween(this,"volume",100,time,ease,delay,func);
}
public function fadeOut(time:Number, ease:Object, delay:Number, func:Object):Void{
ZigoEngine.doTween(this,"volume",0,time,ease,delay,func);
}
public function toPan(val:Number, time:Number, ease:Object, delay:Number, func:Object):Void{
ZigoEngine.doTween(this,"pan",val,time,ease,delay,func);
}
public function toLeft(time:Number, ease:Object, delay:Number, func:Object):Void{
ZigoEngine.doTween(this,"pan",-100,time,ease,delay,func);
}
public function toRight(time:Number, ease:Object, delay:Number, func:Object):Void{
ZigoEngine.doTween(this,"pan" ,100,time,ease,delay,func);
}
}
みたいに書いた方が無難かと
これならFuseのシーケンスにも対応できますな
Trackback
No Trackbacks
Track from Your Website
http://www.actionscript-junky.net/p_blog/trackback/tb.php?id=166
(言及リンクのないトラックバックは無視されます)
Comment
No Comments