2009-08-27 8 views
0

私はAS3の基礎を学び、チュートリアルの書籍を作成しています。私たちは、ムービークリップ(またはスプライトと思われる)にリンクされると、マウスの上にマウスを乗せたときにそれらを拡大するクラスを作成しました。私がすべての原則を覚えていることを確認するために、スプライトがマウスの上に置かれたときにスプライトを回転させるクラスを作ろうとしましたが、巻き戻しを止めましたが、ENTER_FRAMEリスナーをうまく動かすことができません。私がどこに間違っているのか?AS3の拡張クラスのENTER_FRAMEリスナー

パッケージ { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.Event;用事

public class Spinnah extends Sprite 
{ 
    private var _origRotation:Number; 

    public function Spinnah() 
    { 
     _origRotation = this.rotation; 
     this.addEventListener(MouseEvent.ROLL_OVER, eFrameOn); 
     this.addEventListener(MouseEvent.ROLL_OUT, stopSpin); 
    } 

    private function eFrameOn (Event:MouseEvent):void 
    { 
     stage.addEventListener(Event.ENTER_FRAME, spin); 
    } 

    private function spin (event:Event):void 
    { 
     this.rotation += 1; 
    } 

    private function stopSpin (event:Event):void 
    { 
     stage.removeEventListener(Event.ENTER_FRAME, spin); 
     this.rotation = _origRotation; 
    } 
} 

}

答えて

0

WOW、。私はアホです。私は、ROLL_OUT関数を間違ったリスナーを使用して、大文字小文字に誤りがありました。ごめんなさい。アーカイブのために、ここに作業コードがあります。

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

public class Spinnah extends Sprite 
{ 
    private var _origRotation:Number; 

    public function Spinnah() 
    { 
     _origRotation = this.rotation; 
     this.addEventListener(MouseEvent.ROLL_OVER, eFrameOn); 
     this.addEventListener(MouseEvent.ROLL_OUT, stopSpin); 
    } 

    private function eFrameOn (event:MouseEvent):void 
    { 
     stage.addEventListener(Event.ENTER_FRAME, spin); 
    } 

    private function spin (event:Event):void 
    { 
     this.rotation += 1; 
    } 

    private function stopSpin (event:MouseEvent):void 
    { 
     stage.removeEventListener(Event.ENTER_FRAME, spin); 
     this.rotation = _origRotation; 
    } 
} 

}

+0

クール。 startSpinメソッドとstopSpinメソッドが公開されていて、クラス内のROLL_OUTハンドラ、ROLL_OUTハンドラはありませんが、startSpin()とstopSpin()を呼び出す場所は外です。 –

+0

そうすることのメリットは何ですか? –

+0

あなたは内部からではなく、Spinnahの外側からロールオーバーを設定します。これを使用する人は自由に回転をオンとオフに設定できます。コンポーネント内で処理されるロールオーバーに拘束されることはありません。私はより良いカプセル化と思いますか? –