PDA

Volledige versie bekijken : probleem bij timeline scripting


Danilo
%Europe/Berlin %716 %2009, 17:11
Ik ben een beginner bij flash. Vroeger bij 2.0 ging het beter, maar dit is de eerste keer dat ik moet "scripten" in 3.0

probleem:
Ik heb een movieclip die "begin" heet en eentje die "einde" heet.
Ik heb ook 1 knop die knop heet in mijn library maar hij heet "hit" in de properties, deze staat gewoon in elk van de movieclips.
Die 2 movieclips heb ik in scene1 gezet, ze hebben elk 5 frames op scene1. Ik wil dat als ik op de knop druk dat ik van framelabel "begin" naar framelabel "einde" ga.
Daarvoor gebruik ik deze code:
knop.addEventListener(MouseEvent.CLICK, onOneClick, false, 0, true);

function onOneClick(evt:MouseEvent):void {
begin.gotoAndStop("einde");
}

Ik krijg steeds een 1120 error. Waarom?

http://i239.photobucket.com/albums/ff152/V3r1t4s/Picture12-1.png
http://i239.photobucket.com/albums/ff152/V3r1t4s/Picture10.png
http://i239.photobucket.com/albums/ff152/V3r1t4s/Picture13.png

Jan
%Europe/Berlin %768 %2009, 18:26
Ik heb ook 1 knop die knop heet in mijn library maar hij heet "hit" in de properties, deze staat gewoon in elk van de movieclips.
knop.addEventListener(MouseEvent.CLICK, onOneClick, false, 0, true);
begin.hit.addEventListener(MouseEvent.CLICK, onOneClick)
Klik op die movieclip, druk op CTRL+F3 en vul de juiste instance names in in het vakje waar <instance name> staat. (Is niet anders dan in AS2...)
Staat die begin movieclip in hetzelfde frame als je script? (Dus allebei in frame1)
Die framelabels lijken trouwens op de hoofdtijdlijn te zitten terwijl jij in jouw script ze in die movieclip gaat zoeken. (Is niet anders dan in AS2)

In AS2 zou het zijn:
begin.hit.onRelease=onOneClick;//onRelease is hetzelfde als MouseEvent.CLICK
function onOneClick()
{
this._parent._parent.gotoAndStop("einde");//of _root.gotoAndStop("einde")
}
Het equivalent daarvan in AS3:
begin.hit.addEventListener(MouseEvent.CLICK, onOneClick)
function onOneClick(evt:MouseEvent)
{
evt.target.parent.parent.gotoAndStop("einde");//of: gotoAndStop("einde");
}

Groeten,
Jan

Danilo
%Europe/Berlin %779 %2009, 18:42
Bedankt, moet ik de code toevoegen in de movieclip, of als beide movieclips in scene1 staan?

edit: wat is beter: werken met die parent of gewoon gotoAndStop?

Jan
%Europe/Berlin %793 %2009, 19:02
Bedankt, moet ik de code toevoegen in de movieclip, of als beide movieclips in scene1 staan?
Nee, het hoort thuis in een frame op de hoofdtijdlijn (of nog beter is in een aparte class).
edit: wat is beter: werken met die parent of gewoon gotoAndStop?
Maakt niet zo veel uit in dit geval. Zolang je maar de juiste tijdlijn/scope aanspreekt. :)


Groeten jan

Danilo
%Europe/Berlin %819 %2009, 19:40
Ik blijf de 1120 krijgen. Ik weet echt niet wat ik mis doe.

Jan
%Europe/Berlin %839 %2009, 20:09
Vroeger bij 2.0 ging het beter
Je moet je movieclips de juiste instance name geven. (Is niet anders dan in AS2)
Als je "begin" gebruikt in je actionscript moet je die naam ook invullen bij CTRL+F3 bij <instance name>
En gebruik wat meer de trace:
trace(begin);//undefined? dan klopt de instance name niet
En staat die movieclip in hetzelfde frame als het script?

Dit is echt wel gewoon de basis van Flash. :S
http://www.flashfocus.nl/forum/showthread.php?t=6338


Groeten,
Jan

Danilo
%Europe/Berlin %947 %2009, 22:44
Ik ben dan ook geen scripter, het is een opgelegd werk van school.
Ik zit op mac, CTRL +F# werkt niet. Ook niet Fn+ctrl+f3 en ook niet fn + appeltje+f3

Jan
%Europe/Berlin %950 %2009, 22:49
CTRL+F3 is de windows shortcut naar de properties van een Object op je Canvas.

Jan

Danilo
%Europe/Berlin %713 %2009, 17:07
Sorry jan, ik krijg het niet aan de praat. Bij properties kan ik geen instance naam invullen, enkel classnames...

http://i239.photobucket.com/albums/ff152/V3r1t4s/Picture14.png

Jan
%Europe/Berlin %722 %2009, 17:19
Da's de library wat je laat zien. MovieClips in de libray hebben een library name. Da's niet de naam die je gebruikt in je actionscript (tenzij je met classes werkt, dan moet je een classname invullen. Maar je gebruikt geen classes in je script dus laat dat vakje maar leeg waar je nu mc_hoofdscherm hebt ingevuld. Flash lost dat zelf wel op wat daar moet komen)

Stel dat je een movieclip in je lib hebt met de libnaam "hoofdscherm" en je sleept er daarvan 2 naar je canvas in Flash dan heb je 2 instances gemaakt van het object "hoofdscherm".
Die 2 instances moet je dan unieke instance names geven.(als je ze wil aanspreken in je script)
Klik 1 keer op zo'n instance op je canvas en ga dan naar properties:
Daar vul je dan de instance name in en die naam gebruik je in het actionscript.
http://img259.imageshack.us/img259/1120/uitleg.png

Groeten,
Jan

Danilo
%Europe/Berlin %581 %2009, 13:57
Alvast veel dank voor de hulp jan! Ik heb de instancenames gevonden en ze werken. Er is nu een bijkomend probleempje:

Ik heb in een movieclip buttons gezet, die buttons hebben ook een instance name. Als ik deze dan in scene1 zet, en ze wil tracen krijg ik weer de 1102(undefined) maar in de mc zijn de buttons wel gedefinieerd.

Jan
%Europe/Berlin %589 %2009, 14:08
Je moet die movieclip waarin die button zit een instance name geven zodat je een pad kan maken ernaar toe (net zoals je dat voor folders op je pc met slashes doet maar dan met dots)
my_movieclip.my_button.addEventListener( MouseEvent.CLICK, klikken)
Staat het script in een frame in de hoofdtijdlijn?
Staat in dat frame (eventueel op een andere layer) ook die movieclip?
Staat die button in frame1 van die movieclip?

Groeten,
Jan

Danilo
%Europe/Berlin %593 %2009, 14:13
1) Het script staat momenteel in de movieclip zelf op een apparte layer.
2)?
3)het zijn 4 buttons die verschijnen op frame 5,10,15 en 20 in de movieclip.

Dus ik moet mijn code in scene 1 zetten op het frame waar de movieclip ook instaat?


http://i239.photobucket.com/albums/ff152/V3r1t4s/voorbeeld.jpg
http://i239.photobucket.com/albums/ff152/V3r1t4s/scene1.jpg

Jan
%Europe/Berlin %598 %2009, 14:22
1) Het script staat momenteel in de movieclip zelf op een apparte layer.
Stel dat je 187 movieclips hebt...met overal een beetje script in... da's nogal een gedoe als je dat achteraf moet aanpassen. Het is veel beter om al je script samen te houden in één of meerder frames op de hoofdtijdlijn. (En in één of meerdere aparte classes is nog beter)
En met betrekking tot je printscreen van hierboven:
Je script zit daar al IN de hoofdscherm_mc dus als je daar een pad begint met hoofdscherm_mc staat er voor flash eigenlijk: hoofdscherm_mc.hoofdscherm_mc.button_algemeen
en in hoofdscherm_mc gaat ie geen movieclip met de instance name hoofdscherm_mc vinden.
Daar moet je enkel button_algemeen gebruiken.
Ik zie daar trouwens geen framelabel in die movieclip dus zal je parent.gotoAndStop moeten gebruiken (indien dat framelabel op de hoofdtijdlijn staat)

2)?
Als je movieclip op frame37 staat op de hoofdtijdlijn moet je het script ook in frame37 zetten. (zie volgende)
3)het zijn 4 buttons die verschijnen op frame 5,10,15 en 20 in de movieclip.
Tja, da's een 'eeuwenoud' probleem bij Flash...
Flash kent enkel de instance names als de playhead al een keer voorbij dat object (movieclip/button) gekomen is. Dus als je het script in frame1 zet, en je movieclip staat ook in frame1, maar een button in die movieclip staat in frame2 van die movieclip dan kent flash die button nog niet en zal je script in frame1 op de hoofdtijdlijn niet werken.

Ofwel kies je voor de gemakkelijkste maar eigenlijk niet de netste oplossing: script verhuizen van de hoofdtijdlijn naar de tijdlijn binnen de movieclip en daar dan op frame2 zetten waar ook die button voor het eerst (be)staat. (wat ik eigenlijk afraadde in punt 1)

Ofwel zet je die button op frame1 in de movieclip (dan werkt je script wel in de hoofdtijdlijn op frame1) en maak je die button onzichtbaar en druk je een aantal keer op F5 (tijdlijn verlengen). En pas in frame2 of 5 (waar nodig) maak je die button terug zichtbaar.

Beetje een dilemma. Ik ben benieuwd wat de anderen hierover te zeggen hebben.

Zelf gebruik ik zelden of nooit meer dan 1 frame.
Behalve shape tweens kan je alles wat je via timeline based animation doet ook met actionscript doen en dan heb je zulke problemen/dillema's niet.
In het algemeen is mijn idee: gebruik meerdere frames als je een tekenfilm (zonder script) wil maken, en beperk je tot 1 frame als je project/website vooral scripting based is.

Groeten,
Jan

PS: Het merendeel van je vragen worden doorgaans behandeld in les1 van elke Flash beginnerscursus of tutorial. Ik raad je aan om wat van zulke tutorials te volgen/zoeken op het internet.

Danilo
%Europe/Berlin %951 %2009, 22:50
Hoe kan ik geluid van een filmpje laten stoppen als ik enkel met timelinescripting werk?