0

以下のコードを使用して、.xml ファイルからデータをロードしています。すべてのデータをプリロードしています (オーディオ パス、xml からのビデオを含むビデオ パス)。

すべてが完全にロードされたら、次のコードを使用して FLVPlayback 2.5 のフレーム 2 にビデオをロードしています。

videoPlayer.source = videofile;

問題は、ビデオに 3 ~ 4 秒間白い画面が表示された後、再生が開始されることです。他の PC では、ロードが終了すると正常に再生されます。

私のコード:

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);
    }
}
4

1 に答える 1