2012-11-22 73 views
0

我正在使用下面的代碼從.xml文件加載一些數據。 我預載的所有數據(音頻路徑,視頻通路,包括XML格式的視頻帶FLVPlayback的AS3視頻播放

當一切都被加載完成我加載在第2幀的視頻上的FLVPlayback 2.5與此代碼:

videoPlayer.source = videofile; 

的問題是,視頻顯示一個白色的屏幕爲3-4秒,然後開始播放 在其他一些PC的它起着normaly當加載結束

我的代碼:。

import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import flash.media.Sound; 
import flash.media.SoundChannel; 


stop(); 
//****************************************************** 
// XML Loader 
//****************************************************** 
var myLoader:URLLoader = new URLLoader(); 
//myLoader.load(new URLRequest("myxml.php")); 
myLoader.load(new URLRequest("myxml.xml")); 
myLoader.addEventListener(Event.COMPLETE, processXML); 

function processXML(e:Event):void{ 

    var myXml:XML = new XML(e.target.data); 
    parseXML(myXml); 
} 


//****************************************************** 
// Extract XML value and fill up variables 
//****************************************************** 
var thename:XML; 
var soundpath:XML; 
var theage:XML; 
var theplace:XML; 
var everyday:XML; 
var youwill:XML; 
var pic1:XML; 
var pic2:XML; 
var pic3:XML; 
var videofile:XML; 

var assetsList:Array; 
//----------------------------- 
var sound:Sound; 
var soundChannel:SoundChannel; 

//----------------------------- 

function parseXML(xml:XML):void{ 

    thename = xml.paths.thename[0]; 
    soundpath = xml.paths.soundpath[0]; 
    theage = xml.paths.theage[0]; 
    theplace = xml.paths.theplace[0]; 
    everyday = xml.paths.everyday[0]; 
    youwill = xml.paths.youwill[0]; 
    pic1 = xml.paths.pic1[0]; 
    pic2 = xml.paths.pic2[0]; 
    pic3 = xml.paths.pic3[0]; 
    videofile = xml.paths.videofile[0]; 

    txtThename.text = thename; 
    txtSoundpath.text = soundpath; 
    txtTheage.text = theage; 
    txtTheplace.text = theplace; 
    txtEveryday.text = everyday; 
    txtYouwill.text = youwill; 
    txtPic1.text = pic1; 
    txtPic2.text = pic2; 
    txtPic3.text = pic3; 
    txtVideofile.text = videofile; 

    assetsList = [soundpath,theage,theplace,everyday,youwill,pic1,pic2,pic3,videofile]; 
    preloadAssets(); 
} 
//****************************************************** 
// preloaded assets 
//****************************************************** 
var assetsLoader:URLLoader 
var assetsCtr:Number=0; 

function preloadAssets():void{ 

    assetsLoader = new URLLoader(); 
    var urlRequest:URLRequest = new URLRequest(assetsList[assetsCtr]); 
    assetsLoader.load(urlRequest); 

    assetsLoader.addEventListener(Event.COMPLETE, assetLoadedHanlder); 
    assetsLoader.addEventListener(ProgressEvent.PROGRESS, assetProgressHandler); 

} 

function assetProgressHandler(evt:ProgressEvent):void{ 
    var bl:uint = evt.bytesLoaded; 
    var bt:uint = evt.bytesTotal; 
    var perEachAssets = 1/assetsList.length; 

    var assetsBlLoaded = ((bl/bt)*perEachAssets)+((assetsCtr)/assetsList.length*100)/100; 
    var _percentLoaded = Math.floor(assetsBlLoaded*100); 

    progBar.setProgress(_percentLoaded,100) 
    //trace("_percentLoaded:",_percentLoaded) 

} 
function assetLoadedHanlder(evt:Event):void{ 

    assetsCtr+=1; 
    if(assetsCtr<assetsList.length){ 
     //trace("preloading:"+assetsList[assetsCtr]) 
     var urlRequest:URLRequest = new URLRequest(assetsList[assetsCtr]); 
     assetsLoader.load(urlRequest); 

    }else{ 
     //trace("done!") 
     assetsLoader.removeEventListener(Event.COMPLETE, assetLoadedHanlder); 
     assetsLoader.removeEventListener(ProgressEvent.PROGRESS, assetProgressHandler); 
     gotoAndStop(2); 
    } 
} 

回答

1

而不是直接將組件添加到舞臺上,您可能想嘗試使用ActionScript創建並添加它。

通過這樣做,您可以在需要顯示FLVPlayback實例之前實例化FLVPlayback實例,而不必等到您在時間軸上點擊第2幀。

我無法保證它能解決您的問題,但值得一試。

var _videoFLV:FLVPlayback; 
_videoFLV = new FLVPlayback(); 
_videoFLV.fullScreenTakeOver = false; 
_videoFLV.autoPlay = false; 
_videoFLV.autoRewind = true; 
_videoFLV.isLive = false; 
_videoFLV.skin = null;  
_videoFLV.bufferTime = .1; 
_videoFLV.width = 320; 
_videoFLV.height = 240; 
_videoFLV.source = videofile; 
_videoFLV.stop(); 
_videoFLV.x = 240; 
_videoFLV.y = 240; 
addChild(_videoFLV); 
+0

我全球有機紡織品標準這樣的錯誤:類型未找到或不是編譯sonstant:的FLVPlayback –

+0

確保有您圖書館FLVPlayback2.5組件。如果這不能解決它,你可以導入類與導入fl.video.FLVPlayback; – crooksy88

+0

我已經做到了。謝謝。但是在加載器完成後,它仍然看到一個白色的小屏幕.. –