2016-02-23 34 views
0

基本上我有一個非常簡單的視頻庫設置。我希望它能夠在視頻暫停時在屏幕上顯示某些按鈕,並且在播放時這些按鈕將不可見。這是我的代碼:試圖爲PLAYING/PAUSED_STATE_ENTERED添加一個事件監聽器,返回錯誤1119

import fl.video.*; 
import fl.video.VideoEvent; 
import flash.events.Event; 

videoOne.addEventListener(Event.PLAYING_STATE_ENTERED, hideInfo()); 
videoOne.addEventListener(Event.PAUSED_STATE_ENTERED, showInfo()); 

function showInfo() { 
    thumbnailOne.visible = true; 
    thumbnailTwo.visible = true; 
    thumbnailThree.visible = true; 
    videoGalleryInfo.visible = true; 
    infoHidden = 0; 
} 

function hideInfo() { 
    thumbnailOne.visible = false; 
    thumbnailTwo.visible = false; 
    thumbnailThree.visible = false; 
    videoGalleryInfo.visible = false; 
    infoHidden = 1; 
} 

我一直在使用事件,而不是VideoEvent這一等爲這個固定的問題與早些時候加入另一個事件偵聽complete事件試過,但我總是

返回
Video gallery, Layer 'ActionScript', Frame 77, Line 22 1119: Access of possibly undefined property PLAYING_STATE_ENTERED through a reference with static type Class. 

Video gallery, Layer 'ActionScript', Frame 77, Line 23 1119: Access of possibly undefined property PAUSED_STATE_ENTERED through a reference with static type Class. 

我不明白我在做什麼錯。不應該通過導入fl.video。*來定義屬性。和flash.events.Event;?

編輯︰萬一它很重要,這裏是我的這個特定場景的代碼的其餘部分,包括null建議修復。我仍然得到同樣的錯誤,加上一個「1136:參數不正確的數量預計1」錯誤

import flash.events.MouseEvent; 
import fl.video.*; 
import fl.video.VideoEvent; 
import flash.events.Event; 

stop(); 

homeButton.addEventListener(MouseEvent.CLICK, homePressed); 
soundButton.addEventListener(MouseEvent.CLICK, soundPressed); 
helpButton.addEventListener(MouseEvent.CLICK, helpPressed); 
exitButton.addEventListener(MouseEvent.CLICK, exitPressed); 

var videoPlaying:int = 0; 
var infoHidden:int = 0; 

videoOne.addEventListener(Event.COMPLETE, vid1Comp); 
function vid1Comp(event:Event) { 
    videoOne.visible = false; 
    showInfo(); 
} 



videoOne.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 
videoOne.addEventListener(VideoEvent.PAUSED_STATE_ENTERED, showInfo); 

function showInfo(e:Event):void { 
    thumbnailOne.visible = true; 
    thumbnailTwo.visible = true; 
    thumbnailThree.visible = true; 
    videoGalleryInfo.visible = true; 
    infoHidden = 0; 
} 

function hideInfo(e:Event):void { 
    thumbnailOne.visible = false; 
    thumbnailTwo.visible = false; 
    thumbnailThree.visible = false; 
    videoGalleryInfo.visible = false; 
    infoHidden = 1; 
} 

thumbnailOne.addEventListener(MouseEvent.CLICK, playVid1); 
function playVid1(event:MouseEvent) { 
    hideInfo(); 

    if (musicPlaying == 1) { 
     SoundMixer.stopAll(); 
     musicPlaying = 0; 
    } 

    videoOne.visible = true; 
    videoOne.play(); 
    videoPlaying = 1; 
} 

videoOne.visible = false; 

回答

0

我發現,要解決這個問題,你必須使用完整路徑的事件,所以改變

videoOne.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 
videoOne.addEventListener(VideoEvent.PAUSED_STATE_ENTERED, showInfo); 

videoOne.addEventListener(fl.video.VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 
videoOne.addEventListener(fl.video.VideoEvent.PAUSED_STATE_ENTERED, showInfo); 

固定它。很簡單,真的。不管@null,謝謝你的幫助。

0

這行調用函數hideInfo

videoOne.addEventListener(Event.PLAYING_STATE_ENTERED, hideInfo()); 

,但它應改爲傳遞函數(而不是稱呼它)像這樣:

videoOne.addEventListener(Event.PLAYING_STATE_ENTERED, hideInfo); 

的常量事件要添加在VideoEvent類中定義的類型,所以實際的代碼應該廁所k像這樣:

videoOne.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, hideInfo); 

函數的簽名應該是回調函數的簽名。應該採取Event型或者其適當的子類的一個參數:

function hideInfo(e:Event):void { 

你也可以做

function hideInfo(e:VideEvent):void { 

但是你有沒有用的參數無論如何,所以有沒有真正的點專業不必要的類型。


我仍然得到同樣的錯誤,加上一個「1136:參數不正確的數量預計1」錯誤

那是因爲你改變了函數的簽名,我建議。 當你打電話給你的函數不帶任何參數:

showInfo(); 

這會導致您會收到錯誤。

爲了避免這一點,,因爲你沒有做任何使用這些功能的參數你可以再次改變函數接受null該參數的默認值:

function showInfo(e:Event = null):void { 

這種方式如果沒有參數調用的參數默認爲null,這是好的,因爲你不需要參數。

+0

感謝您的幫助 - 我試着將代碼更改爲您如何描述,但它僅在我聲明hideInfo和showInfo函數的行上給了我更多的錯誤。傳遞函數也沒有修復1119錯誤。就好像它不喜歡我試圖聽到播放或暫停狀態被觸發的事件,而且我遇到了與我在COMPLETE中提到的類似的問題。我不知道fl.video類是不是很麻煩或者是因爲我沒有嘗試過使用它之類的問題。 – Trekkx

+0

@Trekkx你的編輯添加了很多以前沒有的代碼。我在編輯答案時解決了這些問題,請檢查是否解決了問題。 – null

+0

我改變了我的功能,使他們有e:Event = null,它修復了1136錯誤。我仍然基本上是從哪裏開始的,儘管我仍然遇到了1119個錯誤,我稱之爲PLAYING_STATE_ENTERED和PAUSED_STATE_ENTERED。有沒有這個問題的解決方案,或者可能的解決方法,以便我可以在不使用這兩個常量的情況下實現類似的功能?順便說一下,感謝您的幫助,抱歉是一個滋擾。 – Trekkx