2011-11-11 6 views
0

私はASファイルを作成し、それをクラスとして使用しました。その中にボタンとスライドショーイメージと呼ばれました。AS3>特定のフレームでクラスを開始しますか?

その後、タイムラインを移動してイントロを作成することにしました。私の問題は、すべてのオブジェクトが最初のフレームから表示されるということです。特定のフレームの後にクラス全体を開始させる方法はありますか?参照用

コード:

package { 

    import flash.display.Loader; 
    import flash.net.URLRequest; 
    import flash.events.Event; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.display.MovieClip; 


    public class play extends MovieClip { 

    private var loader:Loader = new Loader(); 

    private var images:Array = ["img/Layer_1.jpg", "img/Layer_2.jpg", "img/Layer_3.jpg", "img/Layer_4.jpg", "img/Layer_5.jpg", "img/Layer_6.jpg", "img/Layer_7.jpg", "img/Layer_9.jpg", "img/Layer_10.jpg", "img/Layer_11.jpg", "img/Layer_12.jpg", "img/Layer_13.jpg", "img/Layer_14.jpg"]; 
    private var triangleButton:triangle = new triangle; 
    private var squareButton:square = new square; 
    private var crossButton:cross = new cross; 
    private var circleButton:circle = new circle; 


    public function play() { 
     loadNextImage(); 

     addChild(loader); 
     loader.x = 137; 
     loader.y = 65; 

     //Buttons 
     addChild(triangleButton); 
     triangleButton.width = 28; 
     triangleButton.scaleY = triangleButton.scaleX; 
     triangleButton.x = 804; 
     triangleButton.y = 107; 
     triangleButton.addEventListener(MouseEvent.CLICK, slideGames); 


     addChild(circleButton); 
     circleButton.width = 28; 
     circleButton.scaleY = circleButton.scaleX; 
     circleButton.x = 825; 
     circleButton.y = 130; 
     circleButton.addEventListener(MouseEvent.CLICK, slideGames); 

     addChild(crossButton); 
     crossButton.width = 28; 
     crossButton.scaleY = crossButton.scaleX; 
     crossButton.x = 804; 
     crossButton.y = 155; 
     crossButton.addEventListener(MouseEvent.CLICK, slideGames); 

     addChild(squareButton); 
     squareButton.width = 28; 
     squareButton.scaleY = squareButton.scaleX; 
     squareButton.x = 780; 
     squareButton.y = 130; 
     squareButton.addEventListener(MouseEvent.CLICK, slideGames); 


    } 
    public function slideGames(event:MouseEvent):void { 
     loadNextImage(); 
    } 

    public function loadNextImage() : void { 
     // Increment the image 
     _imageIndex++; 

     // If we've reached the end of the array, start over 
     if (_imageIndex >= images.length) { 
     _imageIndex = 0; 
     } 

     // Now get the image source from the array and tell the loader to load it 
     var imageSource : String = images[_imageIndex] as String; 
     loader.load(new URLRequest(imageSource)); 
    } 
    // Next image to display 
    protected var _imageIndex : int = -1; 
    } 
} 

答えて

3

はい、ではなく、あなたのクラスのコンストラクタ(play())のすべてを初期化する、あなたは別の関数に移動することができ、およびタイムラインからそれを呼び出します。私はドキュメントクラスとしてplayクラスを使用していると仮定しています。

ので、代わりの

public function play() { 

あなたがしたい場合は、この時点でplay()という名前の空のコンストラクタを作成します

public function play_start() { 

に名前を変更します。

フラッシュIDEで、アイテムを表示するフレームを選択し、そこにキーフレームを作成します。 キーフレームを選択し、[アクション]パネル(F9)に移動し、次のコードを入力します。

this.play_start(); 

再生ヘッドがキーフレームであるならば、あなたのコードが実行されなければなりません。

+0

恐ろしい!ありがとう、それは完全に動作します! –

+0

これは本当に役に立ちました。それはちょうど同じようなものより多くを必要とする、それはまたコメントを得る! – donlaur

関連する問題