PDA

Volledige versie bekijken : Actionscript en cuepoints (flv)


Quistnix
%Europe/Berlin %603 %2006, 15:28
Om te beginnen, ik ben betrekkelijk nieuw op FlashFocus, dus sorry als dit al vaker is langsgekomen of in het verkeerde forum staat. Ik heb de zoekfunctie en faq bekeken en ben niks tegengekomen, maar het kan natuurlijk altijd zo zijn dat ik iets gemist heb. Ik heb nog even gewijfeld of het in "video" of in "actionscript" moet, en aangezien mijn probleem in de scripting zit ben ik toch maar hiervoor gegaan. Sorry als dit verkeerd zit.

Enfin, genoeg introductie, mijn probleem:


Ik ben bezig met een flashwebsite waarin flv-videobestanden een belangrijke rol spelen. In de gebruikte flv heb ik cuepoints geplaatst, en de video stream ik via een FLVPlayback-component in de timeline (de property-name is film). Nu heb ik in de flash help-files een manier gevonden om de cuepoints uit te lezen, en wel met de volgende code:


var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);

ns.onCuePoint = function(infoObject:Object)
{
trace("onCuePoint:");
for (var propName:String in infoObject) {
if (propName != "parameters")
{
trace(propName + " = " + infoObject[propName]);
}
else
{
trace("parameters =");
if (infoObject.parameters != undefined) {
for (var paramName:String in infoObject.parameters)
{
trace(" " + paramName + ": " + infoObject.parameters[paramName]);
}
}
else
{
trace("undefined");
}
}
}
trace("---------");
}

ns.play(" <bestandsnaam> ");


Deze code werkt wel, maar helaas alleen als ik de video stream met de ns.play-code, en ik wil de video streamen vanaf de timeline.

Nu kan ik met de volgende code wel detecteren wanneer er een cuepoint langskomt, maar het uitlezen van de naam of parameters van de cuepoint (ik heb slechts 1 van de 2 nodig) lukt daar niet mee.


var listenerObject:Object = new Object();
listenerObject.cuePoint = function(eventObject) {
trace("Elapsed time in seconds: " + film.playheadTime + "\n");
trace(film.listenerObject[name]);
};
film.addEventListener("cuePoint",listenerObject);
[code]

Nu heb ik al veel verwoedde pogingen gedaan om met behulp van deze 2 scripts een resultaat te krijgen wat doet wat ik wil, maar het verste wat ik gekomen ben is dit:

[code]
var listenerObject:Object = new Object();

listenerObject.cuePoint = function(infoObject:Object)
{
trace("onCuePoint:");
for (var propName:String in infoObject) {
if (propName != "parameters")
{
trace(propName + " = " + infoObject[propName]);
}
else
{
trace("parameters =");
if (infoObject.parameters != undefined) {
for (var paramName:String in infoObject.parameters)
{
trace(" " + paramName + ": " + infoObject.parameters[paramName]);
}
}
else
{
trace("undefined");
}
}
}
trace("---------");
}

film.addEventListener("cuePoint",listenerObject);


Dit detecteert de cuepoints wel, maar geeft in plaats van het gewenste resultaat de volgende data:

onCuePoint:
target = _level0.film
type = cuePoint
info = undefined,undefined,undefined,undefined
vp = 0
---------

Kunnen jullie mij vertellen wat ik fout doe, en hoe het opgelost kan worden?

Quistnix
%Europe/Berlin %367 %2006, 09:49
Reageert niemand omdat het zo moeilijk is, omdat het zo eenvoudig is dat dat jullie je niet kunnen voorstellen dat het mij niet lukt, of omdat het hier hopeloos verkeerd staat?

Ik wil niet zeuren of vervelend doen, maar alle feedback wordt gewaardeerd..

marcvz
%Europe/Berlin %376 %2006, 10:01
Zet in je listener eens de voglende code:
trace(eventObject.info.name);

Als het goed is kun je op die manier de naam van het getriggerde cuepoint ophalen.

Quistnix
%Europe/Berlin %382 %2006, 10:11
Fantastisch, het werkt :)

bedankt

AmnesiaHysteria
%Europe/Berlin %751 %2007, 18:02
Quistnix,

Hey hoi. Ik ben pas begonnen om te programmeren in Flash Professional 8 en begin de basis beginselen te begrijpen. Zoals de uitleg al gegeven is door marcvz, die code werkt.

Mijn ding waar ik nog niet achter kan komen is het volgende, ik kan de cue's uitlezen en random naar cuepoints springen. Wat ik graag wil, is een code die start op bijvoorbeeld 'cue01' afspeelt tot 'cue02' en dan terug springt naar 'cue01'.

Ik kom er niet uit, zeg maar.

Hier de code die ik gebruik voor de event:

var listenerObject:Object = new Object();
listenerObject.cuePoint = function(eventObject:Object):Void {
var nextCue:Object;
var nextCueStr:String;
var randomNum:Number = Math.floor(Math.random() * (4 - 1 + 1)+1);
trace(("CuePoint: " + eventObject.info.name) + (" RandomNo: " + randomNum));
nextCueStr = eventObject.info.name;

tellTarget ("mc_cue") {
gotoAndStop(randomNum);
}

nextCue = my_video.findCuePoint("cue0" + randomNum);

my_video.seekSeconds(nextCue.time);
};

my_video.addEventListener("cuePoint", listenerObject);

Hoop dat je me een beetje hulp kunt geven, kom er weinig informatie over tegen en de object handling wordt me nu iets te gecompliceerd ;)