2010-03-18 2 views
1

플래시와 함께 제공되는 표준 FLV 재생 구성 요소를 사용하는 플래시 비디오가 있습니다. ActionScript 3을 사용하여 모양을 수정하고 이벤트 리스너를 설정합니다. 비디오가 재생 될 때 "externalInterface"를 사용하여 새 URL로 이동하도록 설정했습니다. URL은 SWFObject를 사용하여 변수에 설정됩니다.플래시 AS3 : 비디오가 완료되기 전에 (VideoEvent.COMPLETE, completePlay) - 리스너가 트리거됩니다.

(50 명 중 3 명 - Amazon Turk를 사용하여 테스트 됨) 사람들은 비디오가 재생되기도 전에 직접 새 URL로 이동했다고보고했습니다. 이 문제를 반복하는 것은 어렵지만 한 번 나에게 일어났습니다. 처음으로 URL을 방문하는 사람들에게 캐시가 있다는보고가 있기 때문에 캐시와 아무 관련이 없습니다.

import flash.external.*; 
import fl.video.*; 
var myVideo:FLVPlayback = new FLVPlayback(); 

var theUrl:String = this.loaderInfo.parameters.urlName; 
var theScript:String = this.loaderInfo.parameters.scriptName; 


myVideo.source = this.loaderInfo.parameters.videoPath;//"partstown.flv"; 
myVideo.skin = this.loaderInfo.parameters.skinPath;//"SkinUnderPlayStopSeekMuteVol.swf" 
myVideo.skinBackgroundColor = 0xAEBEFB; 
myVideo.skinBackgroundAlpha = 0.5; 
myVideo.width = 939; 
myVideo.height = 660; 


myVideo.addEventListener(VideoEvent.COMPLETE, completePlay); 
function completePlay(e:VideoEvent):void { 
myVideo.alpha=0.2; 
ExternalInterface.call(theScript); 
} 


addChild(myVideo); 

왜 리스너가 완료 이벤트 전에 트리거 될 것이다 : 여기에 코드입니다 http://www.partstown.com/is-bin/INTERSHOP.enfinity/WFS/Reedy-PartsTown-Site/en_US/-/USD/ViewStaticPage-UnFramed?page=tourthetown

:

다음은 비디오의 URL입니까? 어떻게 해결할 수 있습니까?

감사합니다.

답변

1

내가 무엇을 발견했는지 확인하려면 동영상의 초기 정지 상태를 확인해야합니다.

이 스 니펫은 비디오가 "중지됨"상태에 도달하면 감지합니다. 은 "playbackBegun"부울 첫 번째를 무시 같은 방법을 사용 "중지"비디오 이 상태

코드가 여기

dreamincode을 발견 "재생"있어 시작되기 전에 발생 상태, .

비디오가로드 된 후 처음 이해가 끝난 상태에서 완전히로드 된 비디오가 이벤트를 트리거한다는 것을 의미합니다. 따라서 비디오는 건너 뜁니다. 나는 당신이 게시 한 링크로 갔고 비디오가 재생되기 전에 나도 리다이렉트되었다는 것을 알았다.

희망 조금 있습니다. 다른 것이 있는지 찾아 볼 것입니다.

+0

그 생각이 같다,하지만 컨트롤 바 없다 경우에만 적용됩니다. 문제는 아직보고 중입니다. – Tevi

1

로드 된 동영상의 끝 부분에 도달하면 Firefox가 완료를 트리거하는 것으로 보입니다. 즉, 비디오 전체가로드되지 않았지만 내용의 일부만 완료하면 리스너가 해고 당합니다. 내장 된 "playwhenenoughloaded"에 의존하는 대신 내 자신의 진행 상황을 설정하면 문제가 해결 된 것 같습니다.

여기에 코드입니다 : 그것은 해답이 될 수있는 것처럼

import flash.external.*; 
import fl.video.*; 
var myVideo:FLVPlayback = new FLVPlayback(); 

var theUrl:String = this.loaderInfo.parameters.urlName; 
var theScript:String = this.loaderInfo.parameters.scriptName; 


myVideo.source = this.loaderInfo.parameters.videoPath;//"partstown.flv"; 
myVideo.skin = this.loaderInfo.parameters.skinPath;//"SkinUnderPlayStopSeekMuteVol.swf" 
myVideo.skinBackgroundColor = 0xAEBEFB; 
myVideo.skinBackgroundAlpha = 0.5; 
myVideo.width = 939; 
myVideo.height = 660; 
myVideo.autoPlay = false; 

myVideo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress); 
function onLoadProgress(event:ProgressEvent):void { 
    var loadedPct:uint = Math.round(100 * (event.bytesLoaded/event.bytesTotal)); 
    trace('waiting...'); 

    if (loadedPct >= 20){ 

     trace(event.bytesLoaded); 
     trace(loadedPct); 
     myVideo.play(); 

     trace('Playing'); 
    } 
    if (loadedPct >= 90){ 
     trace('Ready to Complete'); 
     myVideo.addEventListener(VideoEvent.COMPLETE, completePlay); 

    } 
} 

function completePlay(ve:VideoEvent):void {  
    trace('COMPLETE!!'); 
    myVideo.alpha=0.2; 
    ExternalInterface.call(theScript); 
    } 

addChild(myVideo); 
관련 문제