Volledige versie bekijken : Reverse timeline play?
[Moreasy]
%Europe/Berlin %325 %2005, 08:48
Is het mogelijk om doormiddel van een buttonactie op _root een reverse play uit te voeren op een ingeladen mc in een hoger _level?
Alvast bedankt
FredericCox
%Europe/Berlin %333 %2005, 08:59
']Is het mogelijk om doormiddel van een buttonactie op _root een reverse play uit te voeren op een ingeladen mc in een hoger _level?
Alvast bedankt
Gelieve eerst het forum te bezichtigen:
http://www.flashfocus.nl/forum/showthread.php?t=3993
[Moreasy]
%Europe/Berlin %339 %2005, 09:08
Gelieve eerst het forum te bezichtigen:
http://www.flashfocus.nl/forum/showthread.php?t=3993
Ik heb al een beter script gevonden die wat meer button gebonden is.
Op de movieclip:
onClipEvent(load){
this.stop();
_global.direction = "forward";
}
onClipEvent(enterFrame){
if(_global.direction == "forward"){
this.nextFrame();
}else if(_global.direction == "backward"){
this.prevFrame();
}
}
//Op de button vooruit:
on(release){
_global.direction = "forward";
}
//Of op de button achteruit:
on(release){
_global.direction = "backward";
}
:)
meester
%Europe/Berlin %425 %2005, 11:13
leuk scriptje jah!
Fatty Owl
%Europe/Berlin %489 %2005, 12:45
Dat is geen beter script
1. Je gebruikt _global
2. Je scripts kan je beter op frames zetten dan op buttons of MC's dan hou je het overzichtelijk.
forward_btn.onRelease = function(){
this._parent.direction = "forward"
}
rewind_btn.onRelease = function(){
this._parent.direction = "rewind"
}
this.je_mc.onEnterFrame = function(){
if(direction == "forward"){
this.nextFrame();
}else if(direction == "rewind"){
this.prevFrame();
}
}
[Moreasy]
%Europe/Berlin %690 %2005, 17:34
Dat is geen beter script
1. Je gebruikt _global
2. Je scripts kan je beter op frames zetten dan op buttons of MC's dan hou je het overzichtelijk.
Ook als je meerdere mc's gebruik op meerdere _levels?
Dauntless
%Europe/Berlin %695 %2005, 17:40
Jup :).
Check in het AS discussie forum eens het _root topic :).
Laiverd
%Europe/Berlin %748 %2005, 18:57
Ter aanvulling op 'dat is geen beter script', zou ik willen zeggen 'dit ook niet' ;) Voortdurend een onEnterFrame laten lopen; tss, tss. Waarom niet gewoon een onEnterFrame aanroepen met een button actie en 'm ook netjes weer verwijderen.
John
[Moreasy]
%Europe/Berlin %751 %2005, 19:02
Jup :).
Check in het AS discussie forum eens het _root topic :).
Okey.. net even doorgespit,
uhhh even de volgende situatie.
M'n site is opgebouwd uit meerdere _levels (42), waaronder dus _root als base menu level.
Ik heb dit mede gedaan om m'n site structuur overzichtelijk te houden (ik weet dan namelijk waar, en op welk niveau het betreffende mc staat).
Ik was van mening dat op deze manier via _root (m'n base menu) de levels goed waren aan te sturen.
Ook heb ik dit gedaan om de bezoekers sneller inhoud te geven van m'n site. (_root kleinhouden dus snel zichtbaar, en de rest laad zich daarboven wel in).
Maar zoals ik het topic [Gebruik van _root] nu lees, is mijn gebruik van _root dus niet goed :( .
Nu even terugkomend op het script van hierboven.
Laten we _globals even vergeten (dit was sowieso niet van toepassing).
Stel: ik wil vanuit _root waar dus m'n menu op staat met een button mc1 op _level1 achteruit weergeven.
Dan kan ik toch gewoon dit uitvoeren:
//Dit in een button actie op _root
on(release){
_level1.direction = "backward";
}
En dit in de mc die geladen is op _level1
onClipEvent(load){
this.stop();
_level1.direction = "forward";
}
onClipEvent(enterFrame){
if(_level1.direction == "forward"){
this.nextFrame();
}else if(_level1.direction == "backward"){
this.prevFrame();
}
}
Of zit ik nu totaal verkeerd?? [?]
Fatty Owl
%Europe/Berlin %800 %2005, 20:13
Daar heb ik niet over nagedacht sorry :# maar de betekenis van beter waat je wel, en dat van mij was beter als dat van hem(wat er schijnbaar niet meer staat):D
maar je hebt gelijk:D
[Moreasy]
%Europe/Berlin %868 %2005, 21:50
Jup :).
Check in het AS discussie forum eens het _root topic :).
Okey net ff doorgespit.
maar m'n site is nu eenmaal opgebouwd in _levels waarbij het menu op _root staat en de mc's in levels laad.
Hoe kan ik er dan voor zorgen dat met een simple button actie vanuit _root een mc op_level1
een reverse maakt.
@Fatty Owl hier is hij weer hoor.
onClipEvent(load){
this.stop();
_global.direction = "forward";
}
onClipEvent(enterFrame){
if(_global.direction == "forward"){
this.nextFrame();
}else if(_global.direction == "backward"){
this.prevFrame();
}
}
On your buttons:
ActionScript:
//Forward button
on(release){
_global.direction = "forward";
}
//Backward button
on(release){
_global.direction = "backward";
}
Fatty Owl
%Europe/Berlin %881 %2005, 22:09
forward_btn.onRelease = function(){
_level1.je_mc.onEnterFrame = function(){
this.nextFrame();
}
}
rewind_btn.onRelease = function(){
_level1.je_mc.play();
delete this._parent.forward_btn.onEnterFrame
}
Laiverd
%Europe/Berlin %883 %2005, 22:12
In plaats van this.nextFrame(); moet je dus een verwijzing maken naar _level1.mcnaam.nextFrame(). Tijd om je wellicht eens te verdiepen in het werken met meerdere tijdlijnen ? ;)
John
Fatty Owl
%Europe/Berlin %884 %2005, 22:13
zeg je tegen wie?
Laiverd
%Europe/Berlin %889 %2005, 22:20
Wat denk je zelf? Wie de schoen past ... Laten we niet threads gaan vervuilen met dit soort vragen.
John
Dauntless
%Europe/Berlin %891 %2005, 22:23
In plaats van this.nextFrame(); moet je dus een verwijzing maken naar _level1.mcnaam.nextFrame(). Tijd om je wellicht eens te verdiepen in het werken met meerdere tijdlijnen ? ;)
John
Hmmm, toch niet?
Maan een AS document, maak een nieuwe mc en zet daar deze code in:
this._parent.onEnterFrame = function(){
trace(this);
}
Dus dan zat hij toch goed met this.nextFrame(); ?
Laiverd
%Europe/Berlin %896 %2005, 22:31
Als je naar een movieclip op _level1 (of welk level dan ook) wilt verwijzen, dan kom je er niet met een _parent verwijzing. Dat werkt alleen maar binnen een _levekl en niet daartussen. Of ik heb iets helemaal gemist in de opzet van het geheel.
John
Laiverd
%Europe/Berlin %897 %2005, 22:32
asdgasg
Dauntless
%Europe/Berlin %898 %2005, 22:34
Ok, daar zit ook wel iets in... Ik ga nu terug m'n mond houden omdat ik veel te weinig ervaring heb met echte levels :p
Fatty Owl
%Europe/Berlin %918 %2005, 23:03
ow sorry ik had verkeerd gekeken. dus het moet worden delete _level1.je_mc.onEnterFrame?
The_One
%Europe/Berlin %961 %2005, 00:03
dus het moet worden delete _level1.je_mc.onEnterFrame?
Lees nou eens Laiverd's posts nog eens ;) [post #11 in deze topic]
[Moreasy]
%Europe/Berlin %128 %2005, 04:05
Bedankt voor alle info en hulp.
Het heeft me weer vooruit geholpen, maar zo eigenwijs als ik ben heb ik het toch weer net iets anders gedaan. :D
Hier mijn oplossing cq verandering
op het betrefende mc op _level1:
onClipEvent (enterFrame) {
if (_level1.test.goBack) {
_level1.test.prevFrame();
} else {
_level1.test.nextFrame();
}
}
Op de buttons vooruit en achteruit in _root, of welk level dan ook:
//vooruit
on (press) {
_level1.test.goBack = false;
}
//achteruit
on (press) {
_level1.test.goBack = true;
}
En natuurlijk de stop(); op de laatste frame van het level1.mc niet vergeten!
Dacht zelf dat dit ook wel een aardige oplossing was [?]
dakans
%Europe/Berlin %530 %2005, 13:44
Om maar even op deze topic verder te borduren. Ik heb dus een MC van 20 frames, met daarin een foto die via een motion tween naar de voorgrond komt. D.m.v. onderstaand script (van Fatty Owl: http://www.flashfocus.nl/forum/showthread.php?t=3993) is het dus mogelijk die 'timeline te reversen'.
var laatsteframe = 20;
this.gotoAndStop(laatsteframe)
this.onEnterFrame = function() {
this.gotoAndStop(prevFrame());
};
Maar ik wil dit bovenstaande proces via 1 button (instancename: switch) controleren. Dus wanneer ik de SWF open, dat ie eerst stopt bij frame 1, dus dat je eerst de 'stilstaande' foto's ziet (ik heb geprobeerd voor bovenstaand script een 'stop ()' te zetten, maar dat werkt niet :@ ). Door een 'onRelease' wil ik de MC dus laten lopen tot frame 20 (hier moet ie dus weer stoppen). En door weer een 'onRelease' via dezelfde button moet ie teruglopen van 20 naar 1 ('reversen'). (Hoop dat dit een beetje duidelijk is)
Leek mij in eerste instantie vrij simpel om dit aan bovenstaande scriptje toe te voegen, maar het lukt me niet. Ben nog niet ervaren met AS, maar dit moet volgens mij kunnen. Moet ik er iets van een 'if' 'else' ingooien? Wie kan hier zijn deskundige blik eens over laten gaan?
B.v.d.
David
Fatty Owl
%Europe/Berlin %577 %2005, 14:50
verander je_mc door de instance van je movieclip en de instance "switch" verander je in "switch_btn"
this.switch_btn.onRelease = function() {
if (this._parent._currentframe == 1) {
delete this._parent.onEnterFrame;
this._parent.play();
} else if (this._parent._currentframe == 20) {
this._parent.onEnterFrame = function() {
this.prevFrame();
};
}
};
dakans
%Europe/Berlin %615 %2005, 15:45
Thnx Fatty Owl,
Zoiets had ik inderdaad ook in mijn hoofd, maar ben nog niet capabel genoeg om dat voorelkaar te krijgen (studies zullen volgen :P ). Is wel een goede leerschool zo!
Maar door mijn eigen fout klopt het niet. Ik vertelde in mijn inleiding dat ik een MC (is idd een movieclip) had van 20 frames, dit klopt niet. Ik bedoelde eigenlijk dat ik een movie :# heb (die ik later extern in een hoofdmov wil laden). Maar dat betekent dus dat ik geen 'instancename = je_mc' heb. Heb het al proberen te veranderen in 1.swf, maar ik snapte ook wel dat dat niet werkte. Hoe wel, weet ik ook niet... Een alternatief?
Fatty Owl
%Europe/Berlin %666 %2005, 17:00
ik heb mijn post hierboven bewerkt (per ongeluk) naar de juiste code (ik wou hem kopieëren maar ik heb hem gewijzigd). Dus test de code hierboven eens.
dakans
%Europe/Berlin %688 %2005, 17:31
DIT IS EM!!!! :D
Vele malen dank! Ik zie dat je overal 'instance' weg hebt gehaald... (wil het niet allemaal klakkeloos overnemen, wil er ook iets van leren). Toch weer simpeler dan ik dacht.
Dit keer roep ik jou uit tot "held van de dag" (voor mij dan).
Toch nog even 1 ding. Wanneer je een fla published als swf en hem daarna opent, staat de flashplayer altijd op 'loop'. Zo nu ook weer, met het gevolg dat ik eerst de loop eruit moet halen wil ie zo funtioneren zoals ie bedoeld is. Als ik hem nu open, gaat ie dus als als een gek heen en weer en blijft ie maar loopen. Dit gebeurt dus ook als ik em in mijn hoofdmov laadt. Ik heb er al een 'stop ()' bijgezet, maar dan werkt het 'reverse' gedeelte niet meer. Oftewel dan loopt ie alleen maar van frame 1 naar 20 en niet meer terug. Hoe kan je dit voorkomen?
dakans
%Europe/Berlin %431 %2005, 11:21
Ik kom er zelf toch echt niet uit! Ik zal het nog een keer proberen te verduidelijken. Ik heb dus onderstaand script:
this.switch_btn.onRelease = function() {
if (this._parent._currentframe == 1) {
delete this._parent.onEnterFrame;
this._parent.play();
} else if (this._parent._currentframe == 20) {
this._parent.onEnterFrame = function() {
this.prevFrame();
};
}
};
Ik heb dus een movie van 20 frames, waarbij de 'ene' foto via een motion tween de 'ander' zijn plaats inneemt. Dit alles gebeurt d.m.v. een druk om een knop (switch_btn). Door het gebruik van deze code kan je de timeline terug afspelen waardoor de 'andere' foto weer de plaats van de 'ene' inneemt. Maar wanneer ik deze swf in een hoofdmov laadt begint ie al te spelen (lees loopen!!!) zonder dat ie stopt. Als je de swf afspeelt zonder dat ie in de hoofdmov geladen is, doet ie het in principe wel, maar pas nadat je de 'loop-functie' bij de flashplayer hebt uitgezet. Ik denk dus dat het hier mee te maken heeft, maar ik heb al geprobeerd er een stop () voor te zetten, maar dat helpt ook niet, hierdoor werkt het 'reverse'-gedeelte niet meer. Wat ik eigenlijk wil weten is of dit simpel is op te lossen?
Groet,
David.
P.S. Zijn er eigenlijk ook goede videotut's over AS???
dakans
%Europe/Berlin %609 %2005, 15:37
Tis druk op het AS-forum, dus moet het denk ik toch maar ff anders oplossen. Mochten er nog suggesties zijn...
Fatty Owl
%Europe/Berlin %765 %2005, 19:21
Normaal als je stop(); zet, zou het moeten werken. Als je die stop zet moet je hem zetten in een nieuwe layer en je moet in die layer op frame 2 insert keyframe doen, en dan je stop(); op het eerste frame zetten... Anders weet ik het ook niet. :#
dakans
%Europe/Berlin %838 %2005, 21:07
Bedankt dat je zo snel reageerde Fatty Owl!
Na veel gepruts ben ik er eindelijk achter gekomen. Uiteindelijk is het toch met 'stops' gelukt. Ik heb op frame 1 (toch wel dezelfde layer) en voor jouw script een stop(); geplaatst, maar het belangrijkste; ik moest er ook een stop(); op het einde zettten (op frame 20). Daarna werkte het zoals het moest werken!
Je hebt iemand van hoofdpijn verlost! THNX :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.