Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [Flash MX] Easing Menu System (https://forum.scholieren.com/showthread.php?t=1290251)

Nijpjes 24-10-2005 09:32

[Flash MX]Easing Menu System
 
Ik heb een Flash animatie gemaakt waarbij ik deze code heb gebruikt/gejat.
Ik ben niet zo ontzettend goed met actionscript, maar ik wil de code aanpassen.
Ik wil:
  • De onRelease moet een rollover worden (maar die heb je niet in mx???)
  • Als mensen op een knop klikken moet de bijbehorende content blijven staan, maar de rollover moet nog wel werken...

Dus voor de duidelijkheid: als ik alleen de onRelease zou vervangen door een rollover, dan zou de content blijven staan op de bijbehorende knop waar de muis het laatst overheen is geweest. Dat is dus niet de bedoeling, de content zou dan terug moeten springen naar de content van de knop waar het laatst op geklikt is...

Heeft iemand enig idee hoe ik dit het beste kan aanpakken?

Chilli Dude 24-10-2005 18:58

ehm ik snap je niet?

ekki 24-10-2005 19:14

Je kunt bijvoorbeeld onRollOver of onRollOut gebruiken?

Nijpjes 24-10-2005 19:36

Daar was ik al bang voor...

Dit is de exacte code die ik gebruik:
Code:

onClipEvent (load) {
        _x = 0;
        _y = 0;
        div = 5;
}

onClipEvent (enterFrame) {
        _x += (endX-_x)/div;
        _y += (endY-_y)/div;

        _root.news.onRelease = function() {
                endX = 0;
                endY = 0;
        };
        _root.bio.onRelease = function() {
                endX = 0;
                endY = -70;
        };
        _root.footage.onRelease = function() {
                endX = 0;
                endY = -140;
        };
        _root.clips.onRelease = function() {
                endX = 0;
                endY = -210;
        };
        _root.pix.onRelease = function() {
                endX = 0;
                endY = -280;
        };
        _root.contact.onRelease = function() {
                endX = 0;
                endY = -350;
        };
        _root.links.onRelease = function() {
                endX = 0;
                endY = -420;
        };
}

Deze code staat in de movieclip die moet bewegen als er op een button wordt geklikt. Deze movieclip is een lange strook met 7 symbooltjes die omhoog/omlaag schuift achter een mask als er op een knop wordt geklikt. De knoppen zijn gelabeld news, bio, footage, clips enz.
Over verdere werking van het script zou ik graag willen verwijzen naar deze site , waar ik het script vandaan heb.

Zoals het script nu is (zie voorbeeld op die site) verschuift het contentframe (de movieclip die deze code bevat) netjes omhoog/omlaag als er op 1 van de 7 knoppen wordt geklikt, waarbij in de mask waarachter de movieclip beweegt het bijbehorende icoontje wordt laten zien.

Wat ik wil is dat er bij een onMouseOver het contentmovieclipje beweegt (dus ipv bij een onRelease). Dat heb ik inmiddels voor elkaar gekregen (door onRelease te vervangen door onRollOver).
Het enige wat er nu nog moet gebeuren is dat als je "mouse out" van een knop het contentmovieclipje teruggaat naar de positie die hoort bij de knop waar het laatst op geklikt is.
Dus: stel je klikt op de knop met label pix, het contentmovieclipje verschuift zijn y-positie met -280 pixels. Maar als je dan met je muis over bijvoorbeeld news gaat (de content verplaatst zich dan weer) en je gaat daarna met je muis over geen enkele knop meer (dus je "mouse out"), dan moet de content terug gaan naar -280 (dus naar het pix icoontje).
Dat laatste gebeurt nu dus niet, de content blijft staan op de positie van de bijbehorende knop waar de muis het laatst overheen gegaan is.

Ik hoop dat het nu duidelijk is...ik denk niet dat ik het duidelijker kan uitleggen.

De mensen die alleen al de moeite nemen dit allemaal te lezen ben ik zeer dankbaar, de mensen die dan ook nog s met een oplossing komen ben ik ontzettend dankbaar :)

Chilli Dude 25-10-2005 04:49

haha zozo dat is denk nog niet eens zo makkelijk...

wat je moet je doen is je buttons een variable meegeven...en wanneer je dan rollout doet dan moet hij naar die variable kijken terug springen...hmm ik ga er is ff over nadenken :)

Nijpjes 25-10-2005 08:21

Dat doet me deugd. Je komt in de "met dank aan"-lijst te staan als je een werkende code weet te bedenken ;).

Ik zat zelf aan zoiets te denken:
Per knop moet de code uit 3 delen bestaan:
  1. Een deel dat zegt dat als er op de knop geklikt wordt (onRelease) de content een bepaalde y-positie krijgt.
  2. En een deel dat het onRollOver element bevat die de content een nieuwe (tijdelijke) positie toewijst.
  3. En een deel dat het onRollOut element bevat om er voor te zorgen dat de content de oude positie van de laatste onRelease krijgt...
Dus: eerst moet in de code verteld worden wat er moet gebeuren bij een onRelease, met "endY" als variabele denk ik.
Daarna moet er een vergelijkbaar stukje code komen die verteld wat er moet gebeuren bij een onRollOver, ik denk met een andere variabele "rollY" ofzo, alleen moet deze variabele wel in dezelfde formule gebruikt worden:
Code:

onClipEvent (enterFrame) {
        _x += (endX-_x)/div;
        _y += (endY-_y)/div;

En dat is denk ik het moeilijkste...dan moet je "and" ofzo gaan gebruiken :confused:
En tenslotte een stukje code die zegt wat er moet gebeuren bij een onRollOut, namelijk de "rollY" variabele krijgt dan de waarde van "endY" zodat de content teruggaat naar zijn laatste onRelease positie...

Ik heb geen idee of dit een efficiente methode is en of het uberhaupt haalbaar is...maar met mijn beperkte kennis is dit het enige wat ik kan bedenken...

Owja, en ik heb alleen 's avonds de mogelijkheid het uit te proberen, omdat ik hier op stage geen Flash heb...

Nijpjes 25-10-2005 08:34

Oew, ik heb nog s over je voorstel gedacht:
Citaat:

wat je moet je doen is je buttons een variable meegeven...en wanneer je dan rollout doet dan moet hij naar die variable kijken terug springen...
En dat klinkt veel makkelijker. Als noob denk ik dan:
Je zet een constante waarde in de knop (de y-positie van de bijbehorende content, bijvoorbeeld "buttonY"). In de content zet je dan bij een
_root.knopnaam.onRelease endY = buttonY
_root.knopnaam.onRollOver endY = waarde (niet verwijzen naar die buttonY)
_root.knopnaam.onRollOut endY = buttonY

Alleen moet de onRollOver een soort van voorrang krijgen t.o.v. onRelease en onRollOut...

Pff, nouja, ik laat het aan jou over Chilli Dude...

Chilli Dude 25-10-2005 18:02

mja ik kan ook alleen s'avonds want overdag op me stage geen tijd om dit te fiksen :p kan je mij misschien je .fla mailen?

Nijpjes 25-10-2005 20:40

rechts aan (right on) dude...

Chilli Dude 25-10-2005 22:22

zelda <3 oh ehm ik ga ff t script bekijken :p het gaat om die dingen onderaan neem ik aan?

Nijpjes 26-10-2005 08:28

Ja, t script staat in dat onderste mask.
Gisteren heb ik nog wat dingen geprobeerd, en misschien is het een idee om ipv een onRollOut een "if get.mouse.position.x > 200" (dit zal waars niet actionscript verantwoord zijn, maar je snapt het non?). Dus dat de content terugspringt naar de laatste onRelease als de muis een bepaalde x-waarde overschrijd.
Jammer dat ik hier vanmorgen pas opkwam, anders had ik het nog kunnen proberen.

Nijpjes 26-10-2005 20:56

Chilli Dude, het is me gelukt! Ik hoop niet dat je heel hard bezig was ofzo...toch bedankt voor de moeite.
Jij hebt wel een plaatsje in mijn "thanks to:" lijst verdient ;)

Dit is de werkende code:
Code:

onClipEvent (load) {
        _x = 0;
        _y = 0;
        terug = 0;
        div = 5;
}
onClipEvent (enterFrame) {
        _x += (endX-_x)/div;
        _y += (endY-_y)/div;

        _root.news.onRollOver = function() {
                endX = 0;
                endY = 0;
        };
        _root.bio.onRollOver = function() {
                endX = 0;
                endY = -70;
        };
        _root.footage.onRollOver = function() {
                endX = 0;
                endY = -140;
        };
        _root.clips.onRollOver = function() {
                endX = 0;
                endY = -210;
        };
        _root.pix.onRollOver = function() {
                endX = 0;
                endY = -280;
        };
        _root.contact.onRollOver = function() {
                endX = 0;
                endY = -350;
        };
        _root.links.onRollOver = function() {
                endX = 0;
                endY = -420;
        };
        _root.news.onRelease = function() {
                terug = 0;
        };
        _root.bio.onRelease = function() {
                terug = -70;
        };
        _root.footage.onRelease = function() {
                terug = -140;
        };
        _root.clips.onRelease = function() {
                terug = -210;
        };
        _root.pix.onRelease = function() {
                terug = -280;
        };
        _root.contact.onRelease = function() {
                terug = -350;
        };
        _root.links.onRelease = function() {
                terug = -420;
        };
        if (_xmouse > 185) {
                endY = terug;
        }       
        else if (_xmouse < 1) {
                endY = terug;
        }
        if (_ymouse > 480) {
                endY = terug;
        }
        else if (_ymouse < -310) {
                endY = terug;
        }
}


Chilli Dude 26-10-2005 23:37

netjes netjes, hmnee was nog niet heel erg er aanbegonnen maar wel begin gemaakt :) en kwam idd op t zelfde neer als wat jij daar hebt (y) goed dat je het zelf heb gefixt! Leer je veel van :)

Nijpjes 27-10-2005 09:17

Sjit ja...en je voelt je ook ff heel erg goed :)


Alle tijden zijn GMT +1. Het is nu 16:49.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.