| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 36
| AS Probleme bei Navigation
Hallo, ich heiße Klaus und bin eigentlich Grafikdesigener, arbeite aber auch gern mal mit Flash, doch Actionscript bereitet mir noch einige Probleme. (hört sich an wie bei der Sendung mit der Maus) Zum Thema: "Mein" Menü soll bei RollOver ein wenig hoch fahren und bei RollOut wieder runter. Das klappt schon mal. (Danke an http://www.flashstar.de/ für MenuFin2.fla) Wenn man einen Menüpunkt anklickt soll ein Feld von oben oder der Seite bzw. von oben und beiden Seiten auf die Bühne "fahren" und das durch Actionscript (also kein Bewegungstween). Das Problem: Für ein Feld klappt das schon, aber nur wenn ich die Instanz explizit angebe. Es soll aber wenn ich z.B auf "Kontakt" klicke das Feld zu Kontakt erscheinen und wenn ich z.B. auf "Marken" klicke die Felder zu Marken und nicht wieder das zu Kontakt. (hoffe das versteht jemand) Außerdem soll der angeklickte Menüpunkt "oben" bleiben und nicht bei RollOut wieder runter gehen und die Felder von einem Alphawert von 100 auf einen von ca 60 wärend der "Fahrt". Ich probiere seit Tagen immer mal wieder herum das alleine zu schaffen, doch meine zu geringe AS-Kenntnis läßt das nicht zu. Hab das auch mit 2 verschiedenen Methoden versucht: 1. das gesamte AS in einem Bild (index1.fla) 2. AS im 1. Bild nur für das Menü zuständig mit Verweis auf ein anderes Bild, wo dann das Feld kommen sollte. Würde mich riesig über Hilfe freuen.... Hier das AS zu 1. Code: // Positionieren (Slide)
MovieClip.prototype.slideClip = function(pHoch, pRunter, pHFaktor, pRFaktor) {
with (this) {
if (signal == 1) {
_y += (pHoch-_y)/pHFaktor;
}
if (signal == 0) {
_y += (pRunter-_y)/pRFaktor;
}
}
};
// Navigations Clip (Inhalt)
MovieClip.prototype.initClip = function(pClip, pTitel) {
pClip.txtTitel = pTitel;
pClip.signal = 0;
pClip.label = pTitel;
// Mausereignisse
pClip.onRollOver = function() {
this.signal = 1;
};
pClip.onRollOut = function() {
this.signal = 0;
};
pClip.onPress = function() {
mc_con04.signal = 1;
};
};
// Navigations Clip Initialisieren
onLoad = initClip(mc_men01, "dino's");
onLoad = initClip(mc_men02, "schaufenster");
onLoad = initClip(mc_men03, "marken");
onLoad = initClip(mc_men04, "kontakt");
// Navigations Clip Positioniern und Bewegen
mc_men01.onEnterFrame = function() {
this.slideClip(400, 420, 2, 3);
};
mc_men02.onEnterFrame = function() {
this.slideClip(400, 420, 2, 3);
};
mc_men03.onEnterFrame = function() {
this.slideClip(400, 420, 2, 3);
};
mc_men04.onEnterFrame = function() {
this.slideClip(400, 420, 2, 3);
};
// Inhalt Clip (Inhalt)
MovieClip.prototype.initContent = function(cClip) {
cClip.signal = 0;
};
// Content Initialisieren
onLoad = initContent(mc_con01);
onLoad = initContent(mc_con02);
onLoad = initContent(mc_con03);
onLoad = initContent(mc_con04);
// Content Positioniern und Bewegen
mc_con01.onEnterFrame = function() {
this.slideClip(380, 0, 3, 3);
};
mc_con02.onEnterFrame = function() {
this.slideClip(380, 0, 3, 3);
};
mc_con03.onEnterFrame = function() {
this.slideClip(380, 0, 3, 3);
};
mc_con04.onEnterFrame = function() {
this.slideClip(380, 0, 3, 3);
};
stop(); Hier die 2 Flas: |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: Stuttgart
Beiträge: 6.415
|
Willkommen im Forum! Vorweg mal etwas. Wenn du ein Problem hast solltest du generell dieses so kompakt wie möglich-aber mit allen nötigen details- darstellen. Dein Text ist richtig lang geworden, und so reduzierst du die Anzahl "williger" Helfer enorm-es gibt kaum jemanden der soviel Zeit verwendet um sich in ein Thema einzuarbeiten- und dann auch noch flas.. ![]() Bevor man dich im Regen stehen läßt hier meine Ratschläge: --- onLoad = initClip(mc_men01, "dino's"); ergibt keinen sinn was hast du damit vor? du kannst auf den onLoad eine funktionsreferenz(mc.onLoad=funktionsname) setzen, so setzte nur den rückgabewert von initClip, in diesem fall undefined -- du hast 5 frames und in allen steht der o.g. code. warum? initialisieren muß du nur einmal, prototypen von funktion müssen einmal definiert werden- und können dann von jedem mc benutzt werden- wiederverndbarkeit von code nennt man das und das sollte auch der sinn von funktionen sein. --- enterFrame löscht man nachdem sie ihren dienst erledigt haben(hier den entspr. clip fertiggeslidet haben) -- das mit der signalvariablen ist gut überlegt aber ein wenig veraltet, du kannst doch bei bedarf onEnterFrames setzen und löschen- warum nicht davon gebrauch machen? -- du solltest dir ein wenig klarer über den gültigkeitsbereich von variablen und funktionen werden. dann verstehste auch warum einmal this und dann wieder kein this gebraucht wird. suche im forum hilft(fachjargon: scope) -- im prinzip würde ich so ein menü wie folgt realisieren. ich benutze in der hauptzeitleiste(_root) nur ein einziges frame darin ein movieclip der das menü enthält ein movieclip der den content enthält im menü die buttons. auf die buttons sowas in der art ActionScript:
du kannst in nem neuen film doch mal kleine elemente deines films nachbauen. zB wie mache ich das mit dem sliden. machste ne funktion und läßt nen schwarzes quadrat mal sliden. usw viel erfolg deluxe |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 36
|
Hallo Deluxe, danke für die Hilfe, doch leider klappt es jetzt gar nicht: Wenn ich das Script mal testen lasse, dann kommen folgende Fehlermeldungen: **Fehler** Szene=Scene 1, Ebene=Zonen, Bild=1:Zeile 1: Anweisung muss innerhalb einer on/onClipEvent-Prozedur vorliegen button4.onRelease = function(){ **Fehler** Szene=Scene 1, Ebene=Zonen, Bild=1:Zeile 6: Anweisungsblock muss mit '}' beendet werden MovieClip.prototype.slideMe=function(zielx,ziely){ **Fehler** Szene=Scene 1, Ebene=Zonen, Bild=1:Zeile 27: Syntaxfehler. } **Fehler** Szene=Scene 1, Ebene=Zonen, Bild=1:Zeile 6: Anweisung muss innerhalb einer on/onClipEvent-Prozedur vorliegen MovieClip.prototype.slideMe=function(zielx,ziely){ Anzahl der ActionScript-Fehler: 4 Gemeldete Fehler: 4 id=EigeneID hab ich mal durch id=kontakt ersetzt FunktionDieEventuellGeoeffneteContentFelderAusslid et() FunktionDieEntsprechendesContentFeldEinSlidet(id) hab ich mal durch dinos.gotoAndPlay(1) ersetzt, obwohl das ja auch mein Problem war ein Script zu schreiben bzw. finden das ein oder mehrere Felder in die Bühne fahren lässt, aber zuvor die Felder, die sich auf der Bühne befinden wieder einfährt. Hab ich irgendwas bei deiner Antwort nicht richtig verstanden oder besser gesagt, kannst du mir nochmal behilflich sein? |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: Stuttgart
Beiträge: 6.415
|
hey! du solltest das script doch nicht kopieren sondern verstehen. fehler ja fehlt eine geschweifte klammer das AS muß in nen frame geschrieben werden und nicht auf nem mc platziert werden. die ewiglangen funktionsnamen sind noch ohne bedeutung oder denkst du die wären in flash implementiert?! ![]() die sollten vom namen her dir beschreiben was für funktionen du erstellen solltest. fang doch wie gesagt klein an nimm dir doch nicht 10 codeschnippsel die du nicht verstehst- so kommst du nie selbst hinter einen fehler. unter zeitdruck ist das schwer- klar- aber es hat doch einen hohen nachwert sich damit länger zu beschäftigen. nächtliche grüße deluxe |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |