Okay. Im Prinzip ist das ein simpler Aufbau.
Du brauchst 3 Movieclips
Movieclip A enthält deine Menüpunkte
Movieclip B dient als Maske, maskiert also MovieClip A
Movieclip C ist nur eine unsichtbare Fläche mit der du die Y Koordinaten der Maus im Verhältniss vergleicheist.
Vor dem Code erstmal Erklärung:
Gehen wir davon aus deine MC Punkte haben eine Gesamthöhe von 2000 Pixeln, du selbst hast aber für deine Menüpunkte auf deiner Seite nur 400 Pixel Höhe Platz.
Ergo. erstellst du eine Maske mit eben 400 Pixeln Höhe und der Breite deines Menupunktmcs und maskierst damit selbigen.
Was maskieren ist weißt du sicher von PS usw. D.h. du siehst jetzt deine Menüpunkte nur innerhlab der Maske.
Um den kompletten Menubaum anzusehen muss dieser also Scrollbar sein. Und zwar genau um die Differenz (in dem Fall 1600 Pixel)
Sprich Menubaum Y ohne Scrollen = 0 bzw. Maske._y
Menubaum Y voll gescrollt =0-Differenz bzw. m,aske._y-Differenz
Diese Differenz muss erstmal in Prozent umgewandelt werden.
Also kein scrollen 0 %. Voll gescrollt 100%
Auch die Mausposition muss in Prozent umgerechnet werden.
Du kannst also entweder die Maske selbst als Mausprozentrechner verwenden
100/maske Höhe*(Maus Y Position - maske Y)
(was aber zum Nachteil hat dass du 0 Prozent nur erreichst wenn du mit der Maus direkt an der oberen Maskenkante klebst, genauso auch mit 100 % untere Kante)
oder du nimmst eine elegantere Lösung und verwendest dazu die dritte Fläche die zB nur 300 Pixel hoch ist, dafür 50 Pixel weiter unten als die Maske liegt (also Die vertikale Mitte der Maske)
100/Fläche Höhe*(Maus Y Position - Fläche Y)
Da du somit einen prozentwert erhalten hast kannst du nun via
meinemenupunkte._y=flaeche._y-(differenz/100*mausprozente);
dein Menu scrollen lassen.
Folgender einfacher Code müsste Funktionieren und dir das ganze näher bringen.
setMask ist auskommentiert damit du den Scrollvorgang bei dieser einfarbigen Fläche auch siehst.
PHP:
//Erstmal die drei Flächen erstellen. Kannst und wirst du wahrscheinlich manuell machen
//Fläche die das Menue darstellt
createEmptyMovieClip("menu",0);
menu.beginFill(0xFF0000,100);
menu.moveTo(0,0);
menu.lineTo(300,0);
menu.lineTo(300,2000);
menu.lineTo(0,2000);
menu.lineTo(0,0);
menu.EndFill();
//Fläche die die Maske darstellt
createEmptyMovieClip("maske",1);
maske.beginFill(0x00FF00,100);
maske.moveTo(0,0);
maske.lineTo(300,0);
maske.lineTo(300,400);
maske.lineTo(0,400);
maske.lineTo(0,0);
maske.EndFill();
//Fläche die die Mausfläche darstellt
createEmptyMovieClip("maus",2);
maus.beginFill(0x000000,100);
maus.moveTo(0,0);
maus.lineTo(300,0);
maus.lineTo(300,300);
maus.lineTo(0,300);
maus.lineTo(0,0);
maus.EndFill();
//Positionieren des ganzen
maske._x=(Stage.width/2)-(maske._width/2);
maske._y=(Stage.height/2)-(maske._height/2);
menu._y=maske._y;
menu._x=maske._x;
maus._x=maske._x;
maus._y=maske._y+50;
//Maskierung (Auskommentiert)
//menu.setMask(maske);
//Errechnen der Differenz
div = menu._height-maske._height;
//Mousmove errechnet die Mauprozente
_root.onMouseMove=function(){
prz=Math.round(100/maus._height*(_root._ymouse-maus._y));
//Checken das prz nicht unter 0 und nicht über 100 geht
if(prz<0){prz=0;}
if(prz>100){prz=100;}
menu._y=maske._y-(div/100*prz);
}
Das ganze lässt sich noch verfeinern mit mx.transitions usw.
Aber ich denke damit kannst arbeiten
Sorry übrigens dass es so lange gedauert hat. Ich hab gar nicht mehr an den Thread gedacht. UPS
Wenn du es selber nicht mehr brauchen kannst, ist es vieleicht jemand anderem hilfreich