Nijpjes
%Europe/Berlin %438 %2005, 11:31
Dit is de exacte code die ik gebruik:
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 (http://www.actionscripts.org/tutorials/intermediate/Easing_Menu_System/index.shtml), 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 zat zelf aan zoiets te denken:
Per knop moet de code uit 3 delen bestaan:
Een deel dat zegt dat als er op de knop geklikt wordt (onRelease) de content een bepaalde y-positie krijgt.
En een deel dat het onRollOver element bevat die de content een nieuwe (tijdelijke) positie toewijst.
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:
onClipEvent (enterFrame) {
_x += (endX-_x)/div;
_y += (endY-_y)/div;
En dat is denk ik het moeilijkste...dan moet je "and" ofzo gaan gebruiken
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...
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 zelfs ontzettend dankbaar :)
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 (http://www.actionscripts.org/tutorials/intermediate/Easing_Menu_System/index.shtml), 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 zat zelf aan zoiets te denken:
Per knop moet de code uit 3 delen bestaan:
Een deel dat zegt dat als er op de knop geklikt wordt (onRelease) de content een bepaalde y-positie krijgt.
En een deel dat het onRollOver element bevat die de content een nieuwe (tijdelijke) positie toewijst.
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:
onClipEvent (enterFrame) {
_x += (endX-_x)/div;
_y += (endY-_y)/div;
En dat is denk ik het moeilijkste...dan moet je "and" ofzo gaan gebruiken
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...
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 zelfs ontzettend dankbaar :)