OK, heres la façon de procéder, dans les deux AS3 et AS2
Tout d'abord quelques notions de base.
J'ai utilisé Flash CS3 Video Encoder pour encoder le FLV pour que je puisse intégrer mon cuePoints propres. Ce que vous nommez-les ne fait rien. Assurez-vous certains ajuster le script d'action ci-dessous pour cuePoint le nom que vous choisissez. Dans la plupart des cas de mauvais mettre une au début (comme une navigation) et un à la fin (comme un événement). Dans ce cas, j'ai appelé l'un au début «début» et celle à la fin "fini". Heres une capture d'écran:
Son tellement plus facile de créer vos propres cuePoints que vous encodez votre vidéo. Malheureusement, parfois, vous êtes juste remis d'un fichier FLV sans cuePoints. Heureusement, vous pouvez créer les vôtres en utilisant ActionScript. Ive jamais eu à le faire de cette façon, mais theres beaucoup de tutoriels là-bas qui expliquent comment, si vous avez besoin.
Un dernier - souvenez-vous que votre FLV doit être importé à la première image de votre scénario. Si vous ne pouvez pas faire cela dans votre film, vous devrez le créer dans son propre film, puis charger ce film dans votre principale.
Maintenant que j'ai mon FLV encodé avec cuePoints ajouté, il suffit d'ouvrir un nouveau fichier Flash à blanc (AS3 ou AS2, comme vous préférez) et d'importer vos FLV en scène en utilisant le composant FLVPlayback (nécessite Flash 8 ou supérieur).
Donnez votre FLVPlayback composante quelconque nom de l'instance que vous voulez. Dans ce cas, j'ai utilisé "my_FLVPlybk" (que vous verrez est assez courant si vous regardez jamais par tuts.)
Si vous travaillez avec ActionScript 3, sur le même châssis que votre FLV ajoutez ce code:
import fl.video.*;
//set up the cuepoint listener
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);
//listen for the end cuepoint which I named "finished" during encoding
if (eventObject.info.name == "finished") {
var URLReq:URLRequest = new URLRequest("http://www.xmission.com/~emailbox/whycat.htm");
try {
//here's our redirect
navigateToURL(URLReq, "_self");
} catch (e:Error) {
trace(e);
}
}
}
- import fl.video.*;
-
- //set up the cuepoint listener
- 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);
-
- //listen for the end cuepoint which I named "finished" during encoding
- if (eventObject.info.name == "finished") {
- var URLReq:URLRequest = new URLRequest("http://www.xmission.com/~emailbox/whycat.htm");
- try {
- //here's our redirect
- navigateToURL(URLReq, "_self");
- } catch (e:Error) {
- trace(e);
- }
- }
- }
Si vous travaillez avec l'AS 2 ici votre code:
//to use getURL it has to be in an on or onClipEvent so we use onClipEvent (load)
onClipEvent (load) {
import mx.video.*;
//set up the cuepoint listener
var listenerObject1:Object = new Object();
listenerObject1.cuePoint = function(eventObject:Object):Void {
var cuePtName = eventObject.info.name; //variable for cuepoint name
//listen for the end cuepoint which I named "finished" during encoding
if (cuePtName == "finished") {
//do the redirect
getURL("http://www.xmission.com/~emailbox/whycat.htm", "_self");
//trace("Elapsed time in seconds: " + my_FLVPlybk.playheadTime);
//trace("Cue point name is: " + eventObject.info.name);
//trace("Cue point type is: " + eventObject.info.type);
}
};
my_FLVPlybk.addEventListener("cuePoint", listenerObject1);
}
- //to use getURL it has to be in an on or onClipEvent so we use onClipEvent (load)
- onClipEvent (load) {
- import mx.video.*;
-
- //set up the cuepoint listener
- var listenerObject1:Object = new Object();
- listenerObject1.cuePoint = function(eventObject:Object):Void {
- var cuePtName = eventObject.info.name; //variable for cuepoint name
- //listen for the end cuepoint which I named "finished" during encoding
- if (cuePtName == "finished") {
- //do the redirect
- getURL("http://www.xmission.com/~emailbox/whycat.htm", "_self");
-
- //trace("Elapsed time in seconds: " + my_FLVPlybk.playheadTime);
- //trace("Cue point name is: " + eventObject.info.name);
- //trace("Cue point type is: " + eventObject.info.type);
- }
- };
- my_FLVPlybk.addEventListener("cuePoint", listenerObject1);
- }
J'ai ajouté quelques commentaires pour aider à expliquer whats going on.
Le résultat final est le même dans les deux cas:
AS 3 exemple AS 2 par exemple (mes excuses pour la longueur de la vidéo. Il a été le plus court dont je disposais. Si vous ne voulez pas regarder tout cela il suffit d'utiliser le curseur pour frotter à proximité de la fin - je me mis à rediriger vers une page correspondante sur la raison pour laquelle les chats font des choses).