2012-03-31 5 views
1

Ich verwende Greensock LoaderMax, um Videodateien und Sounddateien zu laden. Ich habe so viel Code kopiert, wie mir zur Verfügung steht. Ein Video (s9) wird abgespielt und bei einem bestimmten Prozentsatz über das Video muss ein anderer Ton abgespielt werden.Spielen Sie Sound bei bestimmten PlayProgress oder VideoTime mit GreenSock?

if(s9.playProgress > .1) // This is what I can't get to work 
{ 
    s12_sound.playSound(); //This sound won't play at .1 playProgress 
} 

s9.content.visible = true; 

s9.playVideo(); 

stop(); 

s9.addEventListener(VideoLoader.VIDEO_COMPLETE, play_s9_loop); //This plays a video once s9 is done. 

function play_s9_loop(event:Event):void 
{ 
    s9.content.visible = false; 
    s9_loop.content.visible = true; 
    s9_loop.playVideo(); 
} 

Ich vermute, Sie können nicht nur ein, wenn() auf playProgress tun? Außerdem sauge ich bei AS3.

Antwort

2

Sie sollten Sie können nur das INIT-Ereignis auf dem Video abhören (was normalerweise bedeutet, dass genügend geladen wurde, um die Dauer des Videos zu bestimmen) und dann einen AS-Cue-Punkt hinzufügen.

//...after you create your VideoLoader... 
myVideoLoader.addEventListener(LoaderEvent.INIT, initHandler); 
myVideoLoader.load(); 
function initHandler(event:LoaderEvent):void { 
    myVideoLoader.addASCuePoint(myVideoLoader.duration * 0.1, "myLabel"); 
    myVideoLoader.addEventListener(VideoLoader.VIDEO_CUE_POINT, cuePointHandler); 
} 
function cuePointHandler(event:LoaderEvent):void { 
    trace("Hit the cue point " + event.data.name); 
    s12_sound.playSound(); 
} 

auch sicher, dass Sie diese s12_sound Vorspannung, so dass es bereit ist, zu spielen, wenn Sie es brauchen. Ansonsten kannst du playSound() alles was du willst aufrufen und es wird nicht passieren :)

+0

Okay, ich habe es versucht, und es zeichnet "Hit the cue point myLabel", aber es wird den Sound nicht wiedergeben. Ich stellte sicher, dass die Funktion nach meiner Ladewarteschlange ist und dass der INIT-Listener vorher war. Ich nehme an, da ist noch etwas, das den Sound verhindert, aber es könnte eine Milliarde Dinge sein, der Projektcode ist über Tonnen von Frames verstreut. Ich werde es hier erneut veröffentlichen, wenn ich das Problem finde. – ahainen

+0

WHATTTTTTTT, okay, als ich das veröffentlichte und dies online stellte, funktionierte es aus irgendeinem Grund und spielte den Sound. Keine Ahnung, was das war, aber es funktioniert jetzt. Vielen Dank für deine Hilfe.Auch hier spiele ich die nächsten Tage und wenn ich herausfinde, was mit mir los ist, werde ich posten. – ahainen

1

Ich habe diese Klasse nicht vor, sondern nach dem Lesen der Dokumente verwendet es aussieht wie du so etwas tun kann: http://www.greensock.com/as/docs/tween/com/greensock/loading/VideoLoader.html

var mid:Number = s9_loop.duration/2; //get the midpoint using the duration property 
s9_loop.addASCuePoint(mid, "middle") //using addASCubePoint to add a cuepoint to the midpoint of the video 
s9_loop.addEventListener(VideoLoader.VIDEO_CUE_POINT, handleMidpoint); //listen for the cuepoint 

im Handler Funktion

protected function handleMidpoint(e:Event):void{ 
    //play your sound 
} 
+0

Kein Würfel, habe den Sound nicht abgespielt. Um es einfacher zu machen, weiß ich die Zeit, die ich brauche, um zu spielen, und ich konnte es nicht funktionieren, aber wie würde ich einen Timer schreiben, der beim Betreten des Rahmens ausgeführt wird und dann den Ton nach 59 Sekunden spielt? Ich habe einen ähnlichen Timer versucht, aber ich konnte es nicht funktionieren. – ahainen

+0

Ein Timer wird dir nicht die Genauigkeit geben, die du brauchst, ich würde diesen Weg nicht gehen. Weißt du, ob der VIDEO_CUE_POINT Listener feuert? Ich würde nach einigen Beispielen suchen, die das verwenden – francis

+0

Versuchen Sie, sich das auch anzuschauen: http://actionscriptexamples.com/2008/03/13/dynamically-ad-cue-points-to-an-flv-using-the -flvplayback-control-in-actionskript-30/-wird der Cue-Punkt nach dem Laden des Videos hinzugefügt? – francis

Verwandte Themen