Volledige versie bekijken : Probleemje met actions script ?
Eagle_1
%Europe/Berlin %474 %2005, 12:23
Hello
ik ben nog redelijk nieuw met Flash, maar volgens mij klopt mijn denkwijze wel, alleen de werking niet ;-)
Ik heb 2 pijltjes, 1tje links, 1tje rechts.
Wanneer mijn muis aan de linker kant staat moet het linske pijlte knipperen en vica versa
Ik heb 1 hoofdmovie, en van de pijltjes heb ik ook 2 aparte movies (instances links en rechts)
een Pijltje ziet er als volgt uit : Frame 1 = Leeg (niks te zien dus) , frame 2 t/m 10 tween (pijltje veranderd al tweenend van kleur), me t in frame 10 een gotoAndPlay(2) ;
ik het hoofd filmpje staat dit in frame 2 :
mouseX = _xmouse;
if (mouseX >= 630)
{
this.rechts.gotoAndPlay(2) ;
this.links.gotoAndStop(1) ;
}
if (mouseX >310 && mouseX < 630)
{
this.links.gotoAndPlay(2) ;
this.rechts.gotoAndStop(1) ;
}
gotoAndPlay(1) ;
hetgeen er gebeurd is dat de pijltjes wel verschijnen zoals het moet, maar dat mijn tween niet werkt, dus de pijltjes zijn zichtbaar, maar ik krijg geen kleur veranderingen
iemand enig idee ?
Alvast bedankt
Gr Kris
Flasher
%Europe/Berlin %480 %2005, 12:32
Als bv de muis aan de rechterkant van het scherm is, krijgt de mc rechts constant het script "gotoAndPlay(2)". Daardoor blijft hij als het ware constant op frame 2 hangen.
Je moet denk ik this.links.gotoAndPlay(2) vervangen door this.links.play() (en datzelfde voor rechts)
Dauntless
%Europe/Berlin %480 %2005, 12:32
Dat komt omdat wanneer de tween aan het afspelen is, de muis nog altijd bv groter is als 630 en hij zal dus telkens terug naar frame twee gaan. Dit kan je op deze manier oplossen:
mouseX = _xmouse;
//hij mag dus alleen naar frame 2 gaan als hij nu op frame 1 staat
if (mouseX >= 630 && this.rechts._currentframe == 1)
{
this.rechts.gotoAndPlay(2) ;
this.links.gotoAndStop(1) ;
} //en hetzelfde hier
if (mouseX >310 && mouseX < 630 && links._currentframe == 1)
{
this.links.gotoAndPlay(2) ;
this.rechts.gotoAndStop(1) ;
}
gotoAndPlay(1) ;
Het is ook mooier om je code zo te schrijven:
this.onEnterFrame = function(){
mouseX = _xmouse;
//hij mag dus alleen naar frame 2 gaan als hij nu op frame 1 staat
if (mouseX >= 630 && this.rechts._currentframe == 1) {
this.rechts.gotoAndPlay(2) ;
this.links.gotoAndStop(1) ;
} //en hetzelfde hier
if (mouseX >310 && mouseX < 630 && links._currentframe == 1){
this.links.gotoAndPlay(2) ;
this.rechts.gotoAndStop(1) ;
}
}
stop();
De methode die jij gebruikt (het letterlijk laten herhalen van ene frame met code) is een beetje verouderd.
--Edit:
Hm, het kan goed zijn dat de reactie hierboven ook volledig juist is... (ik zoek het altijd te moeilijk ;)). Maar het feit dat je beter een onEnterFrame gebruikt blijft wel :)
Larsvu
%Europe/Berlin %492 %2005, 12:48
Persoonlijk hou ik er meer van om de script in (in dit geval) de pijltjes te zetten. Dus zoiets als,
if (rechts == 1){play}
En dan zet ik in de hoofdmovie, of waar dan ook, pijl.rechts = 1. Op deze maak je de pijltjes zelfstandiger en hoef je niet telkens de code te herhalen als je hetzelfde effect wil hebben. Op deze manier wordt het (voor mij in ieder geval) ook wat logischer en duidelijker.
Dauntless
%Europe/Berlin %511 %2005, 13:15
Op deze manier wordt het (voor mij in ieder geval) ook wat logischer en duidelijker.
Tot er iemand anders eens naar je .fla kijkt... Of zelfs als je zelf na een paar maand die .fla terug opent, ga je moeite hebben om al je AS terug te vinden. Daarom is het beter om alles te grouperen op frames... Zo heb je er ook meer controle over, hoe jij het doet kan je bv niet dynamisch een onEnterFrame (onClipEvent(enterFrame)) toevoegen of verwijderen, maar zit je er dus constant aan vast.
Larsvu
%Europe/Berlin %515 %2005, 13:22
True, maar wanneer je de namen van je variabelen goed kiest, dan zul je zien dat de code al een stuk makkelijker is omte lezen.
Eagle_1
%Europe/Berlin %458 %2005, 12:00
Hellow
zoals gezegd, ik ben nog vrij nieuw in flash programmeren.
Mag ik dan ook even een korte uitleg over wat die onEnterFrame doet ?
Gr Kris
Larsvu
%Europe/Berlin %479 %2005, 12:30
In dit geval blijft die de positie van de mouse volgen.
TheDutch
%Europe/Berlin %489 %2005, 12:44
Wanneer je FPS(Frames Per Seconde) 30 is, word alles wat in een onEnterFrame functie staat 30 keer per seconde uitgevoerd. :)
Laiverd
%Europe/Berlin %541 %2005, 14:00
MovieClip.onEnterFrame
Availability
Flash Player 6.
Usage
my_mc.onEnterFrame = function() {
// your statements here
}
Parameters
None.
Returns
Nothing.
Description
Event handler; invoked repeatedly at the frame rate of the SWF file. The actions associated with the enterFrame event are processed before any frame actions that are attached to the affected frames.
You must define a function that executes when the event handler is invoked. You can define the function on the Timeline or in a class file that extends the MovieClip class or is linked to a symbol in the library. For more information, see "Assigning a class to a movie clip symbol" in Using ActionScript in Flash.
Example
The following example defines a function for the onEnterFrame method that sends a trace() action to the Output panel:
my_mc.onEnterFrame = function () {
trace ("onEnterFrame called");
};
Oftewel: informatie over wat een functie/eventhandler doet is gewoon in Flash te vinden.
John
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.