自動でネギ振りその2

ちょっと任意タン(だっけ?)みたいのを研究室で作ろうってことで、とりあえずはちゅねを作成したので、せっかくなので、ネギをまた振らせてみました。
http://moeten.info/flex/20080501_hatyune/bin-release/main.html

今回のポイントとして、エフェクトプレイ中は再度エフェクトをプレイさせない方法です。

if( !r1.isPlaying )    r1.play();

これでエフェクト中に再度エフェクトの呼び出しがされないので、回転エフェクトなどですっ飛んで行くことを防ぐことができます。
ソースコードはこちら。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"
     backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FF9D9D]" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.effects.easing.*;
//初期化関数
private function init():void{
    myFlv.play();
    this.addEventListener(Event.ENTER_FRAME , soundGraphe );
}
//アクション
private function myRotate():void{
    if( !r1.isPlaying )    r1.play();
    if( !r2.isPlaying )    r2.play();
    if( !r3.isPlaying )    r3.play();
    if( !r4.isPlaying )    r4.play();
}
//サウンドヒストグラム作成
import mx.collections.ArrayCollection;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;
import flash.utils.ByteArray;
private var nowPlay:Boolean;
private var bytes:ByteArray = new ByteArray();
private var spectrum:Array  = new Array(256);
public function soundGraphe(e:Event):void{
    SoundMixer.computeSpectrum(bytes, true, 0);
    //ヒストグラム用変数作成
    for (var i:int = 0; i < 256; ++i) {
        spectrum[i] = bytes.readFloat();
    }
    var linedata:ArrayCollection = new ArrayCollection();
    var values:Array = new Array();
    for (var x:int = 0; x < 256; ++x) {
        linedata.addItem({
            "color" : x ,
            "sum":  spectrum[x] / 300 }
            );
        //ネギ振るか判定
        if( spectrum[x] != 0 && x >= 100 ){
            if( ! nowPlay ){
                myRotate();
            }
        }
    }
    linedata.addItem({"color":0,"sum":0.008});
    //チャートに代入
    spec.dataProvider = linedata;
}
]]>
</mx:Script>
<!-- ############### アクション ############## -->
<mx:Rotate id="r1" target="{kami_migi}" angleFrom="10" angleTo="0" originX="100" originY="0"
    easingFunction="Back.easeOut" duration="400"/>
<mx:Rotate id="r2" target="{kami_hidari}" angleFrom="-10" angleTo="0" originX="10" originY="10"
    easingFunction="Back.easeOut" duration="400"/>
<mx:Rotate id="r3" target="{ude_migi}" angleFrom="-50" angleTo="0" originX="300" originY="250"
    easingFunction="Back.easeOut" duration="400"/>
<mx:Rotate id="r4" targets="{[naruto1,naruto2]}" angleFrom="360" angleTo="0" originX="22" originY="22"
    repeatCount="0"  duration="7000"/>
<!-- ############### 音声用 ############## -->
<mx:VideoDisplay id="myFlv" x="10" y="10" width="403" height="287" source="miku.flv" visible="false"/>
<!--ヒストグラム-->
<mx:ColumnChart x="10" y="347" id="spec"  height="191"  width="380">
    <mx:series>
        <mx:ColumnSeries xField="color" yField="sum" displayName="Gold"/>
    </mx:series>
</mx:ColumnChart>
<!-- ############### はちゅね ############## -->
<mx:Image x="267" y="52"  id="kami_migi"   source="hatyune/kami_migi.png"/>
<mx:Image x="166" y="20"  id="ude_migi"    source="hatyune/ude_migi.png"/>
<mx:Image x="354" y="31"  id="karada"      source="hatyune/karada.png"/>
<mx:Image x="507" y="160" id="naruto1"     source="hatyune/naruto.png"/>
<mx:Image x="378" y="150" id="naruto2"     source="hatyune/naruto.png"/>
<mx:Image x="380" y="93"  id="kao"         source="hatyune/kao.png"/>
<mx:Image x="534" y="42"  id="kami_hidari" source="hatyune/kami_hidari.png"/>
</mx:Application>