Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Rotation Menue“

D

DaFunsel

Guest

Hallo!

Ich hab da mal ne Frage...

Ich habe ein Script für ein Rotations Menue gefunden.

Ist auch sehr einfach und verständlich aufgebaut. Jetzt habe ich mir alles so umgeändert, dass es mir gefällt.

Jetzt meine Frage:

Kann man in dieses AS noch einbringen, dass er nicht auf iwelche seiten gehen soll, sondern einfach nur ein Schlüsselbild weiterspringt oder so? Also, wenn ich zb. auf "Steckbriefe" klicke, dass er dann das Menue mit einem schönen Effekt nach oben fährt und dann darunter den Inhalt der "Steckbriefe" zeigt?...
Und zb. bei dem Button Impressum, da brauche ich ja nicht viel Platz, da wäre es ganz cool wenn er den Inhalt in die Mitte des Kreises läd. Habe das schon versucht mit leeren MC und so, aber habe noch kein Erfolg landen können, das Problem ist ja auch das er in dem AS jedem Button die selbe Anweisung gibt, also das er eine bestimmte Seite laden soll.
Habe das auch schon mit vielen .html Dateien versucht, die er mit einer neuen .swf laden soll, aber das is nicht so schön und es besteht auch die gefahr, das der User nen Popup blocker besitzt...
Ich habe auch schon nach einem internen Popup gesucht. Damit meine ich ein Fenster, was sich von der Mitte des Bildschirmes nach vorne hin ausdehnt, der Rand dunkel wird mit Alpha: 50% und das in dem Fenster die Infos gezeigt werden. Also ein Fenster was sich wie eine Maske über den Bildschirm legt.---> vergeblich

hier das AS:
Code:
fscommand("allowscale", "false");

// Menüeinträge
links = new Array();
links[1] = ["http://www.Seite.de","Gästebuch"];
links[2] = ["http://www.Seite.de","Abschlussfahrt"];
links[3] = ["http://www.Seite.de","Besinnungstage"];
links[4] = ["http://www.Seite.de","Steckbriefe"];
links[5] = ["http://www.Seite.de","Lehrer"];
links[6] = ["http://www.Seite.de","Lustig"];
links[7] = ["http://www.Seite.de","Wichdorf"];
links[8] = ["http://www.Seite.de","Heimarshausen"];
links[9] = ["http://www.Seite.de","Impressum"];
links[10] = ["http://www.Seite.de","Rechtliches"];

// Bühnen Breite + Höhe
posX = Stage.width / 2;
posY = Stage.height / 2;

// Clips Erzeugen
anzahl = links.length-1;
for (var i = 1; i < anzahl + 1; i++) {
    attachMovie("Menu", "Menu" + i, i);
}

// Global Signal
_global.signal=true;

// Clips auf Umlaufbahn bringen
this.onEnterFrame = function() {
    if (signal) {
    mausPos += ((_root._xmouse - posX) / 100);
    for (var i = 1; i < anzahl + 1; i++) {
        winkel = ((mausPos + (360 / anzahl * i)) * Math.PI) / 180;
        this["Menu" + i]._x = posX + (Math.sin(winkel) * 320);
        this["Menu" + i]._y = posY + (Math.cos(winkel) * 150);
        this["Menu" + i]._xscale = 100 + (Math.cos(winkel) * 50)
        this["Menu" + i]._yscale = 100 + (Math.cos(winkel) * 50);        
        this["Menu" + i].swapDepths(1000 + (Math.cos(winkel) * 100));
        this["Menu" + i].txt = links[i][1].toUpperCase();
        this["Menu" + i].url = links[i][0];
        this["Menu" + i].onRelease = function() {
            getURL(this.url, "_target");
            signal = false;
        };    
        this["Menu" + i].onRollOver = function() {
            signal = false;
        };
        this["Menu" + i].onRollOut = function() {
            signal = true;
        };
    }
    }
};

// Back_Logo
back.swapDepths(999 + 1);
-->_LG_<--
 
Zuletzt bearbeitet von einem Moderator:
D

DaFunsel

Guest

hab die .swf nicht online.. und die .fla kann ich nicht hier hochladen....

-->_LG_<--

Hier mal ein Screenie davon, vill. könnt ihr euch das ganze dann besser vorstellen...


 
Zuletzt bearbeitet von einem Moderator:

TheMercenary

Noch nicht viel geschrieben

AW: Rotation Menue

Hi,
versuch es mal damit... hab es nicht getestet...aber könnte funktionieren...

PHP:
fscommand("allowscale", "false");

// Menüeinträge
links = new Array();
links[1] = gotoAndPlay(1);
links[2] = gotoAndPlay(2);
links[3] = gotoAndPlay(3);
links[4] = gotoAndPlay(4);
links[5] = gotoAndPlay(5);
links[6] = gotoAndPlay(6);
links[7] = gotoAndPlay(7);
links[8] = gotoAndPlay(8);
links[9] = gotoAndPlay(9);
links[10] = gotoAndPlay(9);

// Bühnen Breite + Höhe
posX = Stage.width / 2;
posY = Stage.height / 2;

// Clips Erzeugen
anzahl = links.length-1;
for (var i = 1; i < anzahl + 1; i++) {
    attachMovie("Menu", "Menu" + i, i);
}

// Global Signal
_global.signal=true;

// Clips auf Umlaufbahn bringen
this.onEnterFrame = function() {
    if (signal) {
    mausPos += ((_root._xmouse - posX) / 100);
    for (var i = 1; i < anzahl + 1; i++) {
        winkel = ((mausPos + (360 / anzahl * i)) * Math.PI) / 180;
        this["Menu" + i]._x = posX + (Math.sin(winkel) * 320);
        this["Menu" + i]._y = posY + (Math.cos(winkel) * 150);
        this["Menu" + i]._xscale = 100 + (Math.cos(winkel) * 50)
        this["Menu" + i]._yscale = 100 + (Math.cos(winkel) * 50);        
        this["Menu" + i].swapDepths(1000 + (Math.cos(winkel) * 100));
        this["Menu" + i].txt = links[i][1].toUpperCase();
        this["Menu" + i].url = links[i][0];
        this["Menu" + i].onRelease = function() {
           
        this["Menu" + i].onRollOver = function() {
            signal = false;
        };
        this["Menu" + i].onRollOut = function() {
            signal = true;
        };
    }
    }
};

// Back_Logo
back.swapDepths(999 + 1);
wie gesagt ist nur so ne idee...jetzt müsste er die frames ansteuern beim klicken auf einen der buttons...
wenn es nicht funktionieren sollte lade doch einfach mal die .fla bei rapidshare hoch...

MfG Tinky
 

h_seldon

Aktives Mitglied

AW: Rotation Menue

Hallo,

in dem ursprünglichen Skript wären noch kleinere Optimierungen möglich, z.B.:

- in dem Array links werden die Indexpositionen 1 bis 10 belegt - was ist mit Index 0? Der bleibt leer. Das könnte man korrigieren, z.B.:

PHP:
links[0] = ["http://www.Seite.de","Rechtliches"];
(anstatt links[10] = blabla)

Dann müssten angepasst werden:

PHP:
anzahl = links.length
(zweimal)
PHP:
for (var i = 0; i < anzahl; i++) {
- Variablen sollten deklariert und notfalls initialisiert werden. Wenn man unter Voreinstellungen AS 2 einstellt, funktioniert das Skript nicht mehr, da die Variable mauspos unvermittelt aus dem digitalen Nichts auftaucht. Gesünder wäre vor dem enterFrame:

PHP:
mauspos = 0;
- Eine Klammer wurde falsch gesetzt bei der Berechnung der Variablen winkel. Korrekter müsste es lauten:

PHP:
winkel = (mausPos+(360/anzahl*i))*(Math.PI/180);
- Die Buttons werden beim testen keinen Text anzeigen, da die Eigenschaft text nicht angesprochen wird. In der ersten for-Schleife muss es daher heissen:

PHP:
this["Menu"+i].txt.text = links[i][1].toUpperCase();
- Die eben erwähnte Zeile hat im enterFrame nichts zu suchen, denn das würde bedeuten, dass permanent der Text zugewiesen würde, obwohl es nur einmal am Anfang notwendig ist

- Das gleiche gilt für onRelease, url etc, die ebenfalls nicht in das enterFrame, sondern in die erste Schleife hinein gehören

- in der letzten Zeile sieht das back.swapDepth(999 + 1) lustig aus. Wäre back.swapDepth(1000) nicht einfacher? Oder ist eine Berechnung mit zwei konstanten Werten notwendig?

@ Tinky,

in Deinem Script steht die Zuweisung

PHP:
this["Menu" + i].onRelease = function() {

ohne schließende Klammer

Zur Lösung: ein möglicher Vorschlag wäre das goto, das Tinky anspricht. Das wird zwar fummelig und unflexibel, weil man dann alle Frames händisch anlegen muss. Aber wenn möglichst wenig geskriptet werden soll, dann könnte man es so machen. Die Ziele könnten in das Array links eingetragen werden. Das hat den Vorteil, dass man die übrigen Infos (z.B. Öffnen eines neuen Browserfensters) gegebenenfalls beibehalten kann.

Vorgehen:

1) Erstelle in der Zeitleiste die benötigten Unterseiten, z.B. in Frame 2 bis 20 eine Animation, die zu sehen sein soll, wenn die Seite "Steckbriefe" angezeigt werden soll.
2) Weise Frame 2 eine Bildbezeichnung zu (z.B. "steck")
3) Erweitere das Array wie folgt:

PHP:
links[4] = [null,"Steckbriefe","steck"];

4) Speichere in der ersten Schleife den jeweiligen Wert der Zählvariablen i:

PHP:
this["Menu" + i].i = i;

Das wird benötigt, um später auf den korrekten i-Wert und damit auf den richtigen Index in links zugreifen zu können

5) Ändere das onRelease wie folgt:

PHP:
this["Menu"+i].onRelease = function() {
	if (this.url == null) {
		this._parent.gotoAndPlay(links[this.i][2]);		
	} else {
		getURL(this.url, "_target");
	}
	signal = false;
};

In das Array links wird überall an den Stellen, an denen kein Aufruf einer externen Seite erwünscht ist, null anstatt der bisherigen URL eingetragen. Beim Mausklick wird dann abgefragt, ob diese Stelle == null ist; falls ja, erfolgt das Abspielen der vorher angelegten Zeitleistenanis, ansonsten wird wie gehabt die externe Seite geöffnet.

Idealerweise würde man auch noch die Vars sauber deklarieren, aber das ist ein anderes Thema ...

Viel Spass
 
D

DaFunsel

Guest

AW: Rotation Menue

Cool, danke für die viele Mühe!!

ÄÄÄhm...weiss denn einer von euch wie ich so ein Popupfenster erstellen kann? Was ich meine, könnt ihr euch unter scooter-attack.com angucken. Da müsst ihr dann auf den Shop und dann ein Produkt aussuchen. Dann auf die Infos und dann auf das Bild klicken, dann erscheint das Bild nochmal in groß in soeinem Popup...

---------> noch die .fla

-->_LG_<--
 
Zuletzt bearbeitet von einem Moderator:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.158
Beiträge
2.581.872
Mitglieder
67.225
Neuestes Mitglied
Petra
Oben