PDA

Volledige versie bekijken : hulp voor actie na videoclip


prrrty
%Europe/Berlin %560 %2010, 13:27
Een aan een holder gekoppelde videoclip (flv) moet na het afspelen naar een andere frame op de hoofdtijdslijn.
De swf-clip bestaat uit 1 frame en duurt circa 3 minuten.

Wie o wie kan mij helpen?

-ADV-
%Europe/Berlin %869 %2010, 20:52
Op de hoofdtijdlijn :
onEnterFrame = function() {
if (holder_mc._currentframe == 4500) { // 25fps x60x3?
gotoAndPlay(2);
}Of op het einde van je *.swf :

gotoAndPlay(2);Groet,

edit:
Excuus, ik denk dat ik je vraag niet helemaal correct begrepen heb.
Ik denk dat je dan hier meer aan hebt :
http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00003000.html


-Adv-

prrrty
%Europe/Berlin %433 %2010, 10:24
Bedankt voor het reageren!
Ik wil proberen het eerste voorstel gebruiken.
De huidige actie op de hoofdtijdlijn is:

stop();loadMovie("grootfilm2.swf", "holder");

Hoe vul ik deze aan?
Alvast mijn dank!

-ADV-
%Europe/Berlin %441 %2010, 10:36
Ik denk dat dit een mooie oplossing is:


loadMovie("grootfilm2.swf", holder);
holder.onEnterFrame = function() {
if (holder._currentframe==holder._totalframes) {
trace("einde");
delete this.onEnterFrame;
// jouw acties
}
};

Groet,

-Adv-

prrrty
%Europe/Berlin %885 %2010, 21:15
Code geplaatst, maar ik zie waarschijnlijk iets over het hoofd.
Trace "einde"
Waar kan ik dit label plaatsen?
Groet,
Henk

-ADV-
%Europe/Berlin %892 %2010, 21:25
Excuus, ik heb een foutje gemaakt. De onEnterFrame van de vorige code werkt niet.

'einde' is geen label, de trace functie is om te controleren of er daadwerkelijk iets gebeurd.
Dus als de functie er langskomt dan traced de output 'einde'.

Zo werkt het wel :

var mijnClip:MovieClipLoader = new MovieClipLoader(); //maakt een nieuwe moviecliploader
var listener:Object = new Object(); // de listener
mijnClip.addListener(listener); // de listener gekoppeld op de moviecliploader

mijnClip.loadClip("grootfilm2.swf",holder); // je laad nu je 'grootfilm2.swf' in met de moviecliploader

listener.onLoadInit = function(target:MovieClip) { // Is de clip geladen en klaar voor afspelen?
holder.onEnterFrame = function() { // check elk frame..
if (holder._currentframe == holder._totalframes) { //controleert of de huidige frame gelijk is aan het totaal
trace("einde"); // is alleen maar een check, zie output
holder.stop(); // stopt je movie na 1 maal afspelen
delete this.onEnterFrame; // stopt met checken
// hier de actie die je wilt, bijvoorbeeld gotoAndPlay(2);
}
};

};


Groet,

-Adv-

prrrty
%Europe/Berlin %503 %2010, 12:05
Deze code gaat rechtstreeks naar de gotoAndStop frame zonder de clip af te spelen.
Boven de code heb ik eerst een stop geplaatst.
Het script is geplaatst op een keyframe op acties-layer.
Op een andere laag op hetzelfde frame staat de holder.
Ik neem aan dat er geen verandering nodig is in het swf-bestand van de clip (grootfilm2.swf)

stop();
var mijnClip:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mijnClip.addListener(listener);

mijnClip.loadClip("grootfilm2.swf",holder);

listener.onLoadInit = function(target:MovieClip) {
holder.onEnterFrame = function() {
if (holder._currentframe == holder._totalframes) {
trace("einde");
holder.stop();
delete this.onEnterFrame;
gotoAndStop(310);

}
};

};


Groet,
Henk
(kan jammer genoeg de optie niet vinden die de code duidelijk weergeeft)

-ADV-
%Europe/Berlin %941 %2010, 22:35
Ik lees dat u Flash 8 pro heeft? Klopt dat? Zo ja, jammer anders had u de *.fla
even kunnen uploaden. Ik heb namelijk het CS3 pakket.

1. Stop de code in een layer (1e frame) en noem deze AS
2. Maak een nieuwe layer, noem deze holder.
3. Maak een nieuwe lege Movieclip en sleep deze in de holder layer op de gewenste _x en _y.
4. Noem de movieclip InstanceName : holder (links onderin!!)
5. Save het project, en zet deze in bijvoorbeeld mijndocumenten/mijntest folder.
6. Zet grootfilm2.swf in de folder mijndocumenten/mijntest
7. Test movie

En?

Edit : Heb even een test *.fla geupload en opgeslagen als flash 8.
Open deze save deze op een folder, zet daar ook grootfilm2.swf in.
Test dan de movie.
Ik heb deze code erbij gebruikt zodat het wat overzichtelijker is dan 310 frames op de maintimeline :

//Zet deze *.fla in een folder en zet daarin ook grootfilm2.swf
//Test de movie

stop(); // NU niet nodig! Je hebt maar 1 frame op de maintimeline!
test_mc.stop(); // nodig, zodat deze niet gelijk gaat lopen.

var mijnClip:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mijnClip.addListener(listener);

mijnClip.loadClip("grootfilm2.swf",holder);

listener.onLoadInit = function(target:MovieClip) {
holder.onEnterFrame = function() {
if (holder._currentframe == holder._totalframes) {
trace("einde");
holder.stop();
delete this.onEnterFrame;
test_mc.gotoAndPlay(2); //probeer maar 1 frame te houden op de maintimeline!
// maak anders een nieuwe movieclip en noem deze test_mc ofzo
// en dan test_mc.gotoAndStop(310);
}
};
};

Groet,

-Adv-

prrrty
%Europe/Berlin %646 %2010, 15:31
Hartelijk dank voor geboden hulp.

De code geplaatst, maar de gewenste actie blijft uit.
De filmclip blijft staan op de eindstand zonder een actie naar een andere frame.
Ik heb mijn fla (CS3) bijgevoegd.
De besproken actie staat op frame 230.
Na de clip: een gotoandplay 242
Misschien wordt duidelijk waar de fout zit.

-ADV-
%Europe/Berlin %523 %2010, 12:34
In de bijlage een *.fla en *.swf die wel goed werkt. (bedankt Adnez! ;) )
Bekijk die maar eens.
Daarin zal u zien dat er een *.swf word ingeladen en het de frames bijhoud.
Zodra de *.swf klaar is dan word er een volgende actie uitgevoerd.
Wel zorgen dat de grootfilm2.swf in dezelfde map staat.. :D

Succes,

Groet,

-Adv-

prrrty
%Europe/Berlin %688 %2010, 16:31
Jammer genoeg nog niet opgelost...
Ik heb de grootfilm2.swf in dezelfde map geplaatst als de swf checker.
De clip speelt af met meteen al de tekst "uw *swf is klaar met afspelen"
Misschien gelegen in het feit dat de grootfilm2.swf-clip uit slechts 1 frame bestaat. Nog enkele "try & errors" geprobeerd met gotoAndStop(2), maar de clip blijft na afspelen op de eindstand staan.
Desalniettemin veel dank voor uw moeite.

Henk

-ADV-
%Europe/Berlin %565 %2010, 13:34
Misschien gelegen in het feit dat de grootfilm2.swf-clip uit slechts 1 frame bestaat.

Ja de *.swf moet wel de animatie direct op de maintimeline hebben staan.
(die circa 3 minuten x 25? frames = 4500 frames)
Anders werkt het niet.

Groet,

-Adv-

prrrty
%Europe/Berlin %499 %2010, 11:59
Bingo! Het werkt!
Bedankt voor tekst en uitleg.
De filmclip eerst embedded op de tijdslijn geplaatst (5245 frames) en vervolgens aan het script een gotoandplay toegevoegd.
Bij het embedden komt al meteen de waarschuwing dat deze methode bedoeld is voor korte clips zonder geluid. De synchronisatie van beeld en geluid gaat namelijk verloren.
Hierdoor mis ik circa 25 sec geluid. Ik weet niet of hier nog een oplossing voor is.
Misschien de clip opnieuw opnemen met beeld en geluid van gelijke lengte.
Zie: http://www.advocatentoga.net/yyakar.html

PS.
Ik neem aan dat een actie in plaats van frames via een tijdsfactor niet mogelijk is.
Bijvoorbeeld na 2,5 minuten gotoandplay...

Vr. groet,
Henk

-ADV-
%Europe/Berlin %565 %2010, 13:34
Ik neem aan dat een actie in plaats van frames via een tijdsfactor niet mogelijk is.
Bijvoorbeeld na 2,5 minuten gotoandplay...

Gebruik de setInterval..
Zet maar alleen deze code in een leeg AS2 document en zie wat er gebeurd.

function gotoNaar(){
trace("jouw actie");
}
setInterval(gotoNaar, 5000); //5000 milliseconden


Groet,

-Adv-

prrrty
%Europe/Berlin %604 %2010, 14:29
Ik neem aan dat deze code op een aparte laag in een keyframe geplaatst moet worden?
Onder het andere AS van swf checker?

-ADV-
%Europe/Berlin %634 %2010, 15:13
Dat zou u zo kunnen doen:

stop();

// MovieClipLoader ----------->
var mijnClip:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mijnClip.addListener(listener);
mijnClip.loadClip("grootfilm2.swf",holder);

// Listener, wanneer de clip geladen is en gereed is voorgebruik -->
listener.onLoadInit = function(target:MovieClip) {
setTimeout(gotoNaar, 5000); // na 5 seconden
}

//Functie(s) ------------->
function gotoNaar(){
trace("jouw actie");
//ofwel gotoAndPlay(300);
}

EDIT : vervang setInterval door setTimeout!
Anders blijft de interval de functie steeds herhalen door de ingestelde tijd!
Foutje, sorry ;)

Succes en groet,


-Adv-

prrrty
%Europe/Berlin %471 %2010, 11:19
Helemaal goed!
De lengte van de clip vaststellen was tijdrovend, maar met 183500 prima.
Beeld en geluid blijft synchroon.
Hartelijk dank!
Zie: www.yyakar.nl