Använda referenspunkter

En referenspunkt är en punkt vid vilken videospelaren skickar en cuePoint -händelse när en videofil spelas upp. Du kan lägga till referenspunkter i en FLV-fil vid det tidpunkter när du vill att en händelse ska inträffa för ett annat element på webbsidan. Du kanske vill visa text eller grafik, synkronisera med en Flash-animering eller påverka uppspelningen av FLV-filen genom att pausa den, söka efter en annan tidpunkt i videon eller växla till en annan FLV-fil. Med referenspunkter kan du styra ActionScript-koden så att du synkroniserar punkter i FLV-filen med andra åtgärder på webbsidan.

Det finns tre sorters referenspunkter: navigering, händelse och ActionScript Navigerings- och händelsereferenspunkterna kallas också inbäddade eftersom de är inbäddade i FLV-uppspelningen och i FLV-filens metadatapaket.

Med en navigeringsreferenspunkt kan du söka upp en viss bildruta i FLV-filen eftersom den skapar en nyckelbildruta i FLV-filen så nära som möjligt till den tidpunkt som du anger. En nyckelbildruta är ett datasegment som uppstår mellan bildrutor i FLV-uppspelningen. När du söker efter en navigeringsreferenspunkt söker komponenten efter nyckelbildrutan och startar cuePoint -händelsen.

Med en händelsereferenspunkt kan du synkronisera en tidpunkt i FLV-filen med en extern händelse på webbsidan. Händelsen cuePoint inträffar exakt vid den angivna tidpunkten. Du kan bädda in navigerings- och händelsereferenspunkter i en FLV-fil med guiden Importera video eller Flash Video Encoder. Mer information om guiden Importera video och Flash Video Encoder finns i kapitel 16, ”Arbeta med video” i Använda Flash .

En ActionScript-referenspunkt är en extern referenspunkt som du kan lägga till via komponentens dialogruta Referenspunkter för Flash-video eller med metoden FLVPlayback.addASCuePoint() . Komponenten lagrar och spårar ActionScript-referenspunkter utanför FLV-filen, och därför är de mindre noggranna än de inbäddade referenspunkterna. ActionScript-referenspunkter kan avvika med en tiondels sekund. Du kan öka noggrannheten för ActionScript-referenspunkter genom att sänka värdet på egenskapen playheadUpdateInterval , eftersom komponenten genererar cuePoint -händelsen för ActionScript-referenspunkter när spelhuvudet uppdateras. Du hittar mer information i avsnittet om egenskapen FLVPlayback.playheadUpdateInterval i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

I ActionScript och i FLV-filens metadata representeras en referenspunkt av ett objekt med följande egenskaper: name , time , type och parameters . Egenskapen name är en sträng som innehåller referenspunktens tilldelade namn. Egenskapen time är en siffra som anger tiden i timmar, minuter, sekunder och millisekunder (HH:MM:SS.mmm) när referenspunkten inträffar. Egenskapen type är en sträng vars värde är "navigation" , "event" eller "actionscript" , beroende på vilken typ av referenspunkt som du har skapat. Egenskapen parameters är en array med angivna par med namn och värden.

När en cuePoint -händelse inträffar är referenspunktobjektet tillgängligt i händelseobjektet via egenskapen info .

Använda dialogrutan Referenspunkter för Flash-video

Öppna dialogrutan Referenspunkter för Flash-video genom att dubbelklicka på cellen Värde för cuePoints -parametern i komponentinspektören. Dialogrutan ser ut som i följande bild:

Visa grafik i full storlek
Dialogruta för referenspunkter

I dialogrutan visas inbäddade referenspunkter och ActionScript-referenspunkter. Du kan använda den här dialogrutan för att lägga till och ta bort ActionScript-referenspunkter och parametrar för referenspunkter. Du kan också aktivera och inaktivera inbäddade referenspunkter. Men du kan inte lägga till, ändra eller ta bort inbäddade referenspunkter.

Lägga till en ActionScript-referenspunkt:

  1. Dubbelklicka på värdecellen för parametern cuePoints i komponentinspektören för att öppna dialogrutan Referenspunkter för Flash-video.

  2. Klicka på plustecknet (+) i det övre vänstra hörne ovanför listan med referenspunkter för att lägga till en ActionScript-referenspunkt som standard.

  3. Klicka på texten Ny referenspunkt i kolumnen Namn och redigera texten för att ge referenspunkten ett namn.

  4. Klicka på tidsvärdet 00:00:00:000 för att redigera det och ange en tid då referenspunkten ska inträffa. Du kan ange tiden i timmar, minuter, sekunder och millisekunder (HH:MM:SS.mmm).

    Om det finns flera referenspunkter flyttar dialogrutan nästa referenspunkt till dess kronologiska position i listan.

  5. Om du vill lägga till enparameter för den valda referenspunkten klickar du på plustecknet (+) ovanför avsnittet Parametrar och anger värden i kolumnerna Namn och Värde. Upprepa det här steget för alla parametrar.

  6. Om du vill lägga till fler ActionScript-referenspunkter upprepar du steg 2 till 5 för varje referenspunkt.

  7. Klicka på OK för att spara ändringarna.

Ta bort en ActionScript-referenspunkt:

  1. Dubbelklicka på värdecellen för parametern cuePoints i komponentinspektören för att öppna dialogrutan Referenspunkter för Flash-video.

  2. Markera den referenspunkt som du vill ta bort.

  3. Klicka på minustecknet (-) i det övre vänstra hörnet, ovanför listan med referenspunkter, för att ta bort den.

  4. Upprepa steg 2 och 3 för varje referenspunkt som du vill ta bort.

  5. Klicka på OK för att spara ändringarna.

Så här aktiverar eller inaktiverar du en inbäddad referenspunkt i en FLV-fil:

  1. Dubbelklicka på värdecellen för parametern cuePoints i komponentinspektören för att öppna dialogrutan Referenspunkter för Flash-video.

  2. Markera referenspunkten som du vill aktivera eller inaktivera.

  3. Klicka på värdet i kolumnen Typ för att visa popup-menyn, eller klicka på nedpilen.

  4. Klicka på namnet på referenspunktstypen (till exempel Event eller Navigation) för att aktivera den. Klicka på Inaktiverad för att inaktivera den.

  5. Klicka på OK för att spara ändringarna.

Använda referenspunkter med ActionScript

Du kan använda ActionScript för att lägga till ActionScript-referenspunkter, avlyssna cuePoint -händelser, hitta alla referenspunkter eller referenspunkter av en viss typ, söka efter en navigeringsreferenspunkt, aktivera eller inaktivera en referenspunkt, kontrollera om en referenspunkt är aktiverad och ta bort en referenspunkt.

Exemplet i det här avsnittet använder en FLV-fil som heter cuepoints.flv, och som innehåller följande tre punkter:

Namn

Tidpunkt

Typ

point1

00:00:00.418

Navigation

point2

00:00:07.748

Navigation

point3

00:00:16.020

Navigation

Lägga till ActionScript-referenspunkter

Du kan lägga till ActionScript-referenspunkter i en FLV-fil med metoden addASCuePoint() . Följande exempel lägger till två ActionScript-referenspunkter i FLV-filen när den är klar för uppspelning. Den första referenspunkten läggs till med ett referenspunktsobjekt som anger tidpunkten, namnet och typen för referenspunkten i sina egenskaper. Det andra anropet anger tidpunkten och namnet med metodens time - och name -parametrar.

// Requires an FLVPlayback instance called my_FLVPlybk on Stage 
import fl.video.*; 
import fl.video.MetadataEvent; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var cuePt:Object = new Object(); //create cue point object 
cuePt.time = 2.02; 
cuePt.name = "ASpt1"; 
cuePt.type = "actionscript"; 
my_FLVPlybk.addASCuePoint(cuePt);//add AS cue point 
// add 2nd AS cue point using time and name parameters 
my_FLVPlybk.addASCuePoint(5, "ASpt2"); 

Mer information finns i avsnittet om metoden FLVPlayback.addASCuePoint() i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

Avlyssna cuePoint-händelser

Med cuePoint -händelsen kan du få kontroll i din ActionScript-kod när en cuePoint -händelse inträffar. När en referenspunkt inträffar i följande exempel anropar cuePoint -avlyssnaren en händelsehanterarfunktion som visar värdet på egenskapen playheadTime samt namnet på och typen av referenspunkt. Använd det här exemplet i kombination med exemplet i föregående avsnitt, Lägga till ActionScript-referenspunkter, för att visa resultatet.

my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Elapsed time in seconds: " + my_FLVPlybk.playheadTime); 
        trace("Cue point name is: " + eventObject.info.name); 
        trace("Cue point type is: " + eventObject.info.type); 
}

Mer information om händelsen cuePoint finns i avsnittet om händelsen FLVPlayback.cuePoint i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

Söka efter referenspunkter

Med ActionScript kan du hitta referenspunkter av alla typer, hitta den referenspunkt som ligger närmast en viss tidpunkt eller hitta nästa referenspunkt med ett visst namn.

Händelsehanteraren ready_listener() i följande exempel anropar metoden findCuePoint() för att hitta referenspunkten ASpt1 , och anropar sedan metoden findNearestCuePoint() för att hitta navigeringsreferenspunkten som ligger närmast referenspunkten ASpt1 i tiden:

import fl.video.FLVPlayback; 
import fl.video.CuePointType; 
import fl.video.VideoEvent; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var rtn_obj:Object; //create cue point object 
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point 
function ready_listener(eventObject:VideoEvent):void { 
    rtn_obj = my_FLVPlybk.findCuePoint("ASpt1", CuePointType.ACTIONSCRIPT); 
    traceit(rtn_obj); 
    rtn_obj = my_FLVPlybk.findNearestCuePoint(rtn_obj.time, CuePointType.NAVIGATION); 
    traceit(rtn_obj); 
} 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function traceit(cuePoint:Object):void { 
    trace("Cue point name is: " + cuePoint.name); 
    trace("Cue point time is: " + cuePoint.time); 
    trace("Cue point type is: " + cuePoint.type); 
}

I följande exempel hittar händelsehanteraren ready_listener() referenspunkten ASpt och anropar metoden findNextCuePointWithName() för att hitta nästa referenspunkt med samma namn:

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
var rtn_obj:Object; //create cue point object 
my_FLVPlybk.addASCuePoint(2.02, "ASpt");//add AS cue point 
my_FLVPlybk.addASCuePoint(3.4, "ASpt");//add 2nd Aspt 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:VideoEvent):void { 
    rtn_obj = my_FLVPlybk.findCuePoint("ASpt", CuePointType.ACTIONSCRIPT); 
    traceit(rtn_obj); 
    rtn_obj = my_FLVPlybk.findNextCuePointWithName(rtn_obj); 
    traceit(rtn_obj); 
} 
function traceit(cuePoint:Object):void { 
    trace("Cue point name is: " + cuePoint.name); 
    trace("Cue point time is: " + cuePoint.time); 
    trace("Cue point type is: " + cuePoint.type); 
}

Mer information om hur du söker efter referenspunkter finns i avsnitten om metoderna FLVPlayback.findCuePoint(), FLVPlayback.findNearestCuePoint() och FLVPlayback.findNextCuePointWithName() i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

Söka efter navigeringsreferenspunkter

Du kan söka till en navigeringsreferenspunkt, söka till nästa navigeringsreferenspunkt från en viss tid och söka till föregående navigeringsreferenspunkt från en viss tid. Följande exempel spelar upp FLV-filen cuepoints.flv och söker till referenspunkten vid 7,748 när ready -händelsen inträffar. När cuePoint -händelsen inträffar anropar exemplet metoden seekToPrevNavCuePoint() för att söka efter den första referenspunkten. När den här cuePoint -händelsen inträffar anropar exemplet metoden seekToNextNavCuePoint() för att söka efter den sista referenspunkten genom att lägga till 10 sekunder till eventObject.info.time , som är tidpunkten för den aktuella referenspunkten.

import fl.video.*; 
 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:Object):void { 
    my_FLVPlybk.seekToNavCuePoint("point2"); 
} 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
    trace(eventObject.info.time); 
    if(eventObject.info.time == 7.748) 
        my_FLVPlybk.seekToPrevNavCuePoint(eventObject.info.time - .005); 
    else 
        my_FLVPlybk.seekToNextNavCuePoint(eventObject.info.time + 10); 
} 
my_FLVPlybk.source = "http://helpexamples.com/flash/video/cuepoints.flv";

Mer information finns i avsnitten om metoderna FLVPlayback.seekToNavCuePoint(), FLVPlayback.seekToNextNavCuePoint() och FLVPlayback.seekToPrevNavCuePoint() i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

Aktivera och inaktivera en inbäddad referenspunkt i en FLV-fil

Du kan aktivera och inaktivera inbäddade referenspunkter i FLV-filer genom att använda metoden setFLVCuePointEnabled() . Inaktiverade referenspunkter utlöser inte cuePoint -händelser och fungerar inte med metoderna seekToCuePoint() , seekToNextNavCuePoint() och seekToPrevNavCuePoint() . Däremot kan du hitta inaktiverade referenspunkter med metoderna findCuePoint() , findNearestCuePoint() och findNextCuePointWithName() .

Du kan testa om en inbäddad referenspunkt i en FLV-fil är aktiverad genom att använda metoden isFLVCuePointEnabled() . Följande exempel inaktiverar de inbäddade referenspunkterna point2 och point3 när videon är klar att spelas upp. Men när den första cuePoint -händelsen inträffar testar händelsehanteraren om referenspunkten point3 är inaktiverad, och aktiverar den om den är inaktiverad.

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv"; 
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener); 
function ready_listener(eventObject:VideoEvent):void { 
    my_FLVPlybk.setFLVCuePointEnabled(false, "point2"); 
    my_FLVPlybk.setFLVCuePointEnabled(false, "point3"); 
} 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Cue point time is: " + eventObject.info.time); 
        trace("Cue point name is: " + eventObject.info.name); 
        trace("Cue point type is: " + eventObject.info.type); 
        if (my_FLVPlybk.isFLVCuePointEnabled("point2") == false) { 
            my_FLVPlybk.setFLVCuePointEnabled(true, "point2"); 
        } 
}

Mer information finns i avsnitten om metoderna FLVPlayback.isFLVCuePointEnabled() och FLVPlayback.setFLVCuePointEnabled() i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

Ta bort en ActionScript-referenspunkt

Du kan ta bort en ActionScript-referenspunkt med metoden removeASCuePoint() . Följande exempel tar bort referenspunkten ASpt2 när referenspunkten ASpt1 inträffar:

import fl.video.*; 
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv" 
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point 
my_FLVPlybk.addASCuePoint(3.4, "ASpt2");//add 2nd Aspt 
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener); 
function cp_listener(eventObject:MetadataEvent):void { 
        trace("Cue point name is: " + eventObject.info.name); 
        if (eventObject.info.name == "ASpt1") { 
            my_FLVPlybk.removeASCuePoint("ASpt2");     
            trace("Removed cue point ASpt2"); 
        } 
}

Mer information finns i avsnittet om FLVPlayback.removeASCuePoint() i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .