2010-02-28 27 views
0

我正在爲網頁構建標準幻燈片閃存標頭。如何從AS3中的時間線訪問文檔類的屬性?

有三個主要部分:

  • 被用作項目文檔類
  • 有些聯時間軸代碼幻燈片類
  • 控制器類。

幻燈片類具有所有功能,因此我使用Document類創建幻燈片的新實例並保留名爲幻燈片的屬性變量,以保持對幻燈片實例的引用。

import flash.display.MovieClip; 
import flash.events.Event; 

public class Header extends MovieClip 
{ 
    public var slideshow:Slideshow; 
    public function CSYC_Header() 
     { 
      var picturesURL:String = "images/pictures.xml"; 
      var picturesURLFVar:String = root.loaderInfo.parameters.pictures; 
      picturesURL = picturesURLFVar ? picturesURLFVar : picturesURL; 
      slideshow = new Slideshow(picturesURL, Slideshow.FADE);    
      slideshow.init(); 
      addChild(slideshow); 
     } 

    public function hello():void{trace("Hello");} 
} 

下一步,我現在是使用Adobe Flash Professional中得出一些播放和停止按鈕,然後鏈接thier click事件調用slidshow.play()/。暫停()。此代碼只是放置在時間軸:

import flash.events.MouseEvent; 

pause_control_btn.addEventListener(MouseEvent.CLICK, pauseClicked); 
play_control_btn.addEventListener(MouseEvent.CLICK, playClicked); 
addChild(pause_control_btn); 
addChild(play_control_btn); 

function pauseClicked(e:MouseEvent):void 
{ 
    //the play and pause buttons are on the stage and have the following names as 
    // thier instance names: pause_control_btn, play_control_btn 
    pause_control_btn.alpha = 0; 
    play_control_btn.alpha = 0.37; 
    slideshow.pause(); 
} 

function playClicked(e:MouseEvent):void 
{ 
    pause_control_btn.alpha = 0.37; 
    play_control_btn.alpha = 0; 
    slideshow.play(); 
} 

儘管我能夠調用常規方法是在文件級從時間線上,當我說的幻燈片,我不能打電話的屬性沒有下面的錯誤,例如.play():

1061: Call to a possibly undefined method play through a reference with static type com.example.test:Slideshow.

所以我失去了一些東西很明顯,或將我我要連線的事件來調用一個對象在我的文檔類每一次做的方法對我的文檔類?

回答

1

有沒有必要把時間軸上的按鈕的代碼;您可以通過文檔類中的實例名稱引用這些對象。這是最簡單的解決方案,我認爲完全避免了時間表。

否則可能會調用parent.slideshow或root.slideshow(儘管我認爲root是AS2,我不太記得)會讓您從時間線訪問該實例。前一種選擇可能仍然是更好的選擇,並將代碼保存在一個地方。

希望有所幫助。

+0

好點!我昨晚睡了,現在我覺得有點愚蠢,因爲它最終成爲幻燈片課的一個錯誤。總之,您可以從時間軸中訪問文檔類中的任何內容,以及文檔類中時間線上的任何內容(屬性和方法中的任何內容)。對於此示例:從時間軸中,我可以調用slideshow.play()(如果你不忘記保存添加所需方法的更改:)),並從文檔類中調用pause_control_btn.addEventListener(MouseEvent.CLICK,pauseClicked); 也是如此。所以一切正常! – GitNick 2010-03-01 15:19:20

+0

啊,所以這是問題;)我已經'沒有保存文件'的問題遠遠超過我應該!很高興你已經修復了它,並且很高興知道可以從時間線訪問文檔類中的內容。謝謝(你的)信息! – debu 2010-03-01 17:17:09