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

Post Your Comment


(Smile) (Wink) (Laugh) (Foot in mouth) (Frown) (Gasp) (Cool) (Tongue)

*は入力必須です。E-Mailは公開されません。