首先,我是一個交易的動畫師,而不是程序員,並且只使用動作腳本,這樣對我來說只有兩天光禿禿的。刪除從私人函數調用的視頻類的孩子
我正在做一個測驗類型的工作動畫,點擊答案時會播放與您選擇的內容相關的簡短動畫FLV文件。正如我讀的所有內容都指向AS3是OOP,我決定製作一個包含FLV播放器的MovieClip,並將其鏈接到名爲FLV_Player.as的AS3文件。這樣我每次需要播放視頻時都可以創建FLV_Player的新實例。以下是該文件中的代碼,這似乎很好地工作:
package
{
import fl.video.VideoEvent;
import flash.events.VideoEvent;
import flash.display.MovieClip;
public class FLV_Player extends MovieClip
{
public function FLV_Player(NextVideo:String)
{
animation_player.source=(NextVideo);
animation_player.addEventListener(VideoEvent.COMPLETE, vcompleted);
}
private function vcompleted(e:VideoEvent):void
{
nextFrame();
}
}
}
在DocumentClass.as現在我的文件有這樣的代碼:
private function NewVideo(videoname:String)
{
var nextvideo:FLV_Player = new FLV_Player(videoname);
addChild(nextvideo);
nextvideo.x = 0;
nextvideo.y = 0;
}
所以,當你點擊一個按鈕,轉到下一幀或任何提示符,它會調用NewVideo函數並傳遞接下來要播放的任何視頻的名稱。
NewVideo("Introduction.flv");
現在我敢肯定,我會在運行其他問題以後的路線,因爲我真的不知道什麼,我所做的是它是如何應該做的,但唯一的問題,我似乎在這個時間點正在移除視頻並轉到下一個(或前一個)框架來回答另一個問題。我試過了:
nextFrame();
removeChild(newVideo);
但它沒有奏效。好吧,它可能已經到了下一幀,但是視頻佔據了整個窗口,很難看到它是否存在。
那麼如何刪除我創建的視頻?主要的問題似乎是因爲我必須在私有函數中創建一個FLV_Player類的新實例,所以孩子在本地定義爲「var」,而不是「public」或「private」var,所以我不能再引用它。它告訴我,你只能在文檔類中創建一個「私有變量」,但如果我在那裏創建一個「私有變量」,它會在加載時創建類,而不是從函數傳遞視頻名稱參數。在加載時,我不知道我需要播放哪些視頻?
無論如何,我認爲寫這個讓我更困惑。如果任何人都可以提供幫助,我將非常感謝,謝謝。
你可以聲明私有函數的外部變量沒有初始化它(所以只是'私人變種nextvideo :FLV_Player;'),然後在'NewVideo()'中簡單地設置它:'nextvideo = new FLV_Player(videoname);'。 –