Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-03-2009, 14:03   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Beiträge: 8
Flash Menü ähnlich Yugop: Bewegung nur, wenn Maus am Rand ist

Hallo liebes FF

Nur damit nicht gleich der Hammer kommt:

Ich beschäftige mich noch nicht lange mit Flash und verstehe deshalb bei komplexen Actionsscripts deshalb immer nur die Hälfte... Also bitte helft mit auf Anfängerniveau und erklärt mir bitte auch, wie ich den Code zu verstehen habe und seid nicht böse, wenn ich mich (etwas?) doof anstelle.

Ich habe auch erst alle möglichen Forenbeiträge zum Thema yugop, Menü, vertikal, etc durchgelesen und hab trotzdem noch keinen Beitrag gefunden. Ich habs also wirklich schon versucht!!!
Eine antwort wie "Such mal yugop" hilft mir also NICHT weiter...

Und nun endlich zu meinem Problem:

Ich habe in Flash ein vertikales Menü aus 8 Bildern gebastelt (1Bild = 100X125 px, also insg 100X1200 px), das ich später auf einer Website benutzen möchte.

Da Bildschirme bekanntlich verschieden groß sein können, kann es nun vorkommen, dass mein menü evtl zu hoch für bestimmte Browser ist.
Nun fänd ich es unschön, wenn man, um alle menüpunkte sehen zu können, die ganze website scrollen muss und wollte es stattdessen so lösen:

Wenn man ganz oben oder ganz unten im Menü mit der Maus auf einen bestimmten Bereich kommt, sollen die Menüpunkte langsam nach oben bzw unten scrollen. Das soll theoretisch "unendlich" möglich sein, eben nach dem Yugop-Prinzip.

ABER das Menü soll sich halt NUR BEWEGEN, wenn man an den oberen/Unteren Rand stößt und dabei soll der "Scrollbefehl" NICHT die Buttons überdecken (also: Die Menüpunkte sollen auch anklickbar sein, wenn die UNTER dem Scrollbereich liegen). Und diese Yugopscripte scrollen doch durchgängig, sind für mich in der originalform also unbrauchbar!?!

Wie muss also das "Scrollactionscript" aussehen, damit das so klappt?

Hier mal ein Bild und die Datei (noch ohne Script, mit bunten Flächen statt den Fotos), damit ihr evtl besser versteht, was ich meine. In diesem Fall nur mit 5 Menüpunkten, das Prinzip bleibt ja das gleiche...



Wahrscheinlich ist die Lösung ganz einfach, aber ich bin noch nicht so weit, selbst auf die Lösung zu kommen und finde auch nirgendwo eine. Also helft mir, bitte!

Kann mir zB dieses Script weiterhelfen, wenn man die Bewegungsfunktion (wie auch immer) nur auf die Ränder beschränkt??
das variabelste Yugop Menu

MfG,
Ein absoluter Anfänger
Angehängte Dateien
Dateityp: zip flash.fla.zip (6,5 KB, 17x aufgerufen)
zwobot ist offline   Mit Zitat antworten
Alt 19-03-2009, 14:45   #2 (permalink)
Neuer User
 
Benutzerbild von pixelpur
 
Registriert seit: Jun 2008
Ort: Bei den Fischköppen
Beiträge: 94
Hallo, habe das ganze für einen Bildslider erstellt.

Script auf Hauptleiste:

Code:
_global.slide = this;

var speed = 2;
var maxspeed = 2;
var damper = 2;
var gap = 10;
var overpic = false;
var finished = 30;

var leiste = new Array(2);

leiste[0] = container.attachMovie("bilderleiste", "leiste0", 1);
leiste[1] = container.attachMovie("bilderleiste", "leiste1", 2);

function nextOne() {
	finished ++;
	if (finished >= 2) go();
}

function go() {
	leiste[1]._y = leiste[0]._y + leiste[0]._height + gap;

	mask.onEnterFrame = function() {
		if (!overpic) {
			speed +=  (-(_ymouse - mask._height / 2) / 15 - speed) / 5;
			if (speed < -maxspeed) speed = -maxspeed;
			if (speed > maxspeed) speed = maxspeed;
		} else {
			speed /= 1.4;
		}
		for (var i=0; i<leiste.length; i++) {
			leiste[i]._y += speed;
		}
		for (var i=0; i<leiste.length; i++) {
			if ((leiste[i]._y > mask._height) && speed > 0) moveUp(i);
			if ((leiste[i]._y < -leiste[i]._height - gap) && speed < 0) moveDown(i);
		}
	}
}

function moveUp(y) {
	if (y == leiste.length - 1) {
		leiste[y]._y = leiste[0]._y - leiste[y]._height - gap;
	} else {
		leiste[y]._y = leiste[y + 1]._y - leiste[y]._height - gap;
	}
}

function moveDown(y) {
	if (y == 0) {
		leiste[y]._y = leiste[leiste.length - 1]._y + leiste[leiste.length - 1]._height + gap;
	} else {
		leiste[y]._y = leiste[y - 1]._y + leiste[y - 1]._height + gap;
	}
}
Scribt im Moviclip zum Beweben:

Code:
var bilder = 5;
var zoom = 80;
slide.overpic = true;

for (var i=1; i<=bilder; i++) {
	var p = this.attachMovie("bild" + i, "bild" + i, i);
	p._xscale = p._yscale = zoom;
	if (i > 1) {
		p._y = this["bild" + (i - 1)]._y + this["bild" + (i - 1)]._height + slide.gap;
	}

	_root.btn_oben.onRollOver = function() {
		slide.overpic = false;
	}
	_root.btn_oben.onRollOut = _root.btn_oben.onReleaseOutside = function() {
		slide.overpic = true;
	}
	
}
for (var i=1; i<=bilder; i++) {
	var p = this.attachMovie("bild" + i, "bild" + i, i);
	p._xscale = p._yscale = zoom;
	if (i > 1) {
		p._y = this["bild" + (i - 1)]._y + this["bild" + (i - 1)]._height + slide.gap;
	}

	_root.btn_unten.onRollOver = function() {
		slide.overpic = false;
	}
	_root.btn_unten.onRollOut = _root.btn_unten.onReleaseOutside = function() {
		slide.overpic = true;
	}
	
}

};

slide.nextOne();
Musst dir das sicherlich ein wenig anpassen. Hoffe jedoch ich habe dein Vorhaben richtig verstanden. Sollte dir das Skript nicht auf Anhieb helfen noch mal schreiben.

Gruß
Mirco
pixelpur ist offline   Mit Zitat antworten
Alt 19-03-2009, 15:18   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Beiträge: 8
Wow, danke!

Ich hab jetzt alle Schaltflächen in einen Movieclip verschoben und den auf die Zeitleiste gesetzt und dem das eine actionscript verpasst und der hauptzeitleiste das obere. Ist das so richtig?

Aber bewegen tut sich da noch nichts. Weder nach unten, noch nach oben. Stattdessen ist die Flashdatei um den "Scrollbereich" "abgeschnitten".
Eigentlich soll der ja aber sichtbar sein...

Ich häng nochmal die Datei im neuen Zustand an.

Kannste mir den Code nochmal erläutern, welches Programmierschnipsel für was gut ist? und was welche Zahl bewirkt? Und ob/Wo ich Instanznamen vergeben muss?

Entschuldige mein Unwissen. ich starr den Code die ganze Zeit an, aber der will nicht so wie ich. Und wenn ich jetzt einfach was änder, ohne es zu verstehen, mach ich bestimmt wieder alles kaputt Irgendwann explodiert mein Mac nochmal... ;D

Geändert von zwobot (19-03-2009 um 15:20 Uhr)
zwobot ist offline   Mit Zitat antworten
Alt 19-03-2009, 15:18   #4 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Beiträge: 8
Zip vergessen
Angehängte Dateien
Dateityp: zip flash.fla.zip (11,8 KB, 28x aufgerufen)
zwobot ist offline   Mit Zitat antworten
Alt 19-03-2009, 15:51   #5 (permalink)
flashen-lehr
 
Benutzerbild von michey
 
Registriert seit: Dec 2004
Ort: CH, Europa
Beiträge: 1.688
Ich es ziemlich roh nachgebaut, ohne genaue positionierungen usw. aber die funktionsweise wird so schon mal klar...
Angehängte Dateien
Dateityp: fla slider_obn_untn.fla (35,5 KB, 53x aufgerufen)
__________________
michey
michey ist offline   Mit Zitat antworten
Alt 19-03-2009, 15:51   #6 (permalink)
Neuer User
 
Benutzerbild von pixelpur
 
Registriert seit: Jun 2008
Ort: Bei den Fischköppen
Beiträge: 94
Also um es erst einmal zum laufen zu bekommen, müsstest du dir zwei buttons mit folgenden Instanznamen erzeugen "btn_oben" und das selbige unten.
Dann hast du einem MC in deiner Bibliothek und stellst unter Eigenschaften beim Actionscript Export eine Bezeichung "bilderleiste" ein. Diesen MC schiebst du auch auf deine Hauptebene.
Wenn du erst einmal mein Script verwendest, hast du deine Bilder in der Bibliothek und legst für jedes Bild einen MC an. Auch hier bei den Eigenschaften "bild1" etc hinzufügen. Anstelle der Bilder kannst du dann natürlich auch deine Buttons verwenden.

Nun erst mal viel Erfolg beim erstellen.

EDIT: Michey hat das korrekt umgebaut!!!

Geändert von pixelpur (19-03-2009 um 15:52 Uhr)
pixelpur ist offline   Mit Zitat antworten
Alt 19-03-2009, 16:19   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Beiträge: 8
OK, ich glaub, mit 1-2 kaffe und viel Ruhe kann ich das nachbasteln und hoffentlich auch halbwegs nachvollziehen können.

Aber müssen meine Bilder wirklich in "Movieclips" umgewandelt werden? ich brauch doch "Schaltflächen", oder wie bau ich da meine Buttons ein??

EDIT: Ahh, ich glaube, jetzt kommt die Erkenntnis:
Muss ich jeden einzelnen "Button" in einen Movieclip werfen?

Bitte haut mich nicht, falls das Bödsinn ist. Ich schäm mich schon, weil ichs nicht schnalle...

Geändert von zwobot (19-03-2009 um 16:34 Uhr)
zwobot ist offline   Mit Zitat antworten
Alt 19-03-2009, 16:31   #8 (permalink)
flashen-lehr
 
Benutzerbild von michey
 
Registriert seit: Dec 2004
Ort: CH, Europa
Beiträge: 1.688
Movieclips sind die besseren Schaltflächen, kannst damit mehr anstellen.
Du kannste deine Bilderbuttons auch von Anfang auf in der Bilderleiste von Hand positionieren() und das attach Bild+i usw. herausnehmen. Ist aber mit AS einfacher, so wie es jetzt ist.
Wenn du etwas in einen leeren container lädst kannst zsbp alles was darin enthalten ist, positionieren ohne für jedes Ding wieder extra etwas zu scripten, ist halt wie ein Behälter, der mit Inhalt gefüllt wird.

Edit:
@pixelpur
wie man sieht, interessiert mich das Thema auch.
Habe auch versucht anstelle der Buttons on MouseMove zu verwenden, hat aber nicht funktioniert.
Ziel war es zu erreichen dass wenn die Mausposition unterhalb der Maske ist, soll das sliden nach oben stattfinden, bei Mausposition oberhalb der Maske sliden nach unten.

etwa so:
PHP-Code:
_root.onMouseMove = function() {

    if (
_root._ymouse<=0  ) {
        
slide.overpic true;
        
    }
}
_root.onMouseMove = function() {

    if (
_root._ymouse>=400  ) {
        
slide.overpic true;
        
    }

Weisst du was hier falsch ist?
__________________
michey

Geändert von michey (19-03-2009 um 16:47 Uhr)
michey ist offline   Mit Zitat antworten
Alt 19-03-2009, 16:55   #9 (permalink)
flashen-lehr
 
Benutzerbild von michey
 
Registriert seit: Dec 2004
Ort: CH, Europa
Beiträge: 1.688
Im Prinzip schon, kannst die Buttons in die Bild-McS packen, komm darauf an was du willst damit und wie du sie dann ansprechen willst, für ein on release oder so...
Probieren geht meistens über studieren.
__________________
michey
michey ist offline   Mit Zitat antworten
Alt 19-03-2009, 18:20   #10 (permalink)
Neuer User
 
Benutzerbild von pixelpur
 
Registriert seit: Jun 2008
Ort: Bei den Fischköppen
Beiträge: 94
@ michey: Fand das Thema auch sehr interessant und naja wenn ein Kunde so etwas wünscht soll er es auch bekommen.
Wieso setzt du beide Werte auf true?

Flash Hilfe zeigt anhand eines Beispiels, dass du schon die Makse oder ähnliches als Mc zuweisen solltest.

Flash Hilfe:

Code:
my_mc.onMouseMove = function() {
TAABtrace ("onMouseMove called");
}
pixelpur ist offline   Mit Zitat antworten
Alt 20-03-2009, 01:08   #11 (permalink)
flashen-lehr
 
Benutzerbild von michey
 
Registriert seit: Dec 2004
Ort: CH, Europa
Beiträge: 1.688
so gehts jetzt

PHP-Code:
if (_root._ymouse <=-this.mask._height ) { 
        
slide.overpic true
    }

 if (
_root._ymouse <=this.mask._height ) { 
        
slide.overpic false
    } 
oder so auch

PHP-Code:
_root.mask.onMouseMove = function() { 

    if (
_root._ymouse<=-this._height ) { 
        
slide.overpic true
         
    } 


_root.mask.onMouseMove = function() { 

    if (
_root._ymouse<=this._height ) { 
        
slide.overpic false
         
    } 

und eigentlich würde ich gerne noch das Gebiet der Maske aus der Aktivierung des slidens ausgrenzen, aber es gelingt mir nicht die richtigen Werte dafür zu setzen.
__________________
michey
michey ist offline   Mit Zitat antworten
Alt 20-03-2009, 08:10   #12 (permalink)
Neuer User
 
Benutzerbild von pixelpur
 
Registriert seit: Jun 2008
Ort: Bei den Fischköppen
Beiträge: 94
@ zwobot: Hoffe du hast die Lösung gefunden und wir konnten die helfen.

@michey: Verstehe nicht ganz, wie du die Maske aus dem Slider nehmen willst? für welches Vorhaben. Wenn du einen eigenen Bereich auf der Szene 1 (_root) haben willst, musst du dein Script auf die _root Ebene kopieren. Vielleicht beschreibst du es noch etwas mehr.
__________________
Gruß Mirco
Beruf Pixelschubser - Werbeagentur Kiel und Neumünster
pixelpur ist offline   Mit Zitat antworten
Alt 20-03-2009, 09:22   #13 (permalink)
flashen-lehr
 
Benutzerbild von michey
 
Registriert seit: Dec 2004
Ort: CH, Europa
Beiträge: 1.688
Vielleicht ist mein Vorhaben unsinnig, wollte eigentlich dass das sliden nur dann stattfindet, wenn die Maus nicht auf der Maske ist.
Maus unterhalb der Maske(ymouse<mask._height)= sliden nach oben;
Maus oberhalb der Maske(ymouse>-mask._height)= sliden nach unten;
Maus auf Maske (ymouse<mask._height && ymouse>-mask._height) = stop;
__________________
michey
michey ist offline   Mit Zitat antworten
Alt 20-03-2009, 10:02   #14 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Beiträge: 8
nein, leider noch nicht ganz

Hab jetzt alle Instanznamen vergeben und alles verändert, aber es werden weder die Bilder geladen noch scrollt irgendwas...

Was mach ich denn jetzt schon wieder falsch?

Ich häng euch jetzt mal das Original dran...
Angehängte Dateien
Dateityp: fla menue_flash.fla (270,0 KB, 38x aufgerufen)
zwobot ist offline   Mit Zitat antworten
Alt 20-03-2009, 10:22   #15 (permalink)
Neuer User
 
Benutzerbild von pixelpur
 
Registriert seit: Jun 2008
Ort: Bei den Fischköppen
Beiträge: 94
Also, zum einen sehe ich in der root Ebene keine Buttons mit zugewiesenen Instanznamen und die Exporteinstellungen in der Galerie hast du glaube ich auch vergessen. Oder wolltest du es wie michey beschrieben hat über die Maske steuern?
Da fehlt noch ein wenig was. Das würde ich mir noch mal genau anschauen und das von michey verwenden, dass ist einfach und schnell anzupassen. Der zweite Teil es Scripts scheint auch zu fehlen?
__________________
Gruß Mirco
Beruf Pixelschubser - Werbeagentur Kiel und Neumünster
pixelpur ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
anfänger, flash, menu, menü, yugop

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele