Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-02-2005, 13:18   #1 (permalink)
caddy
 
Benutzerbild von Caddy
 
Registriert seit: Jan 2005
Beiträge: 7
Question Button.onPress ruft Funktion nur einmal auf

Hallo FlashFreaks

Ich habe (wie wohl jeder hier) ein Problem: in angehängter Datei befindet sich die Rahmenanwendung für ein jpg-Lernmodul.

Die beiden Pfeil-Buttons rechts und links vom Abschnittstitel (im as b_nextSection und b_previousSection) sollen der Weiterschaltung der Abschnitte in einem Kapitel dienen. Dies habe ich so umgesetzt: bei onPress auf b_nextSection wird die Funktion nextSection() aufgerufen, die den nächsten Abschnitt lädt (respektive für b_previousSection die Funktion previousSection() ).

In beiden Fällen habe ich nun aber das Problem, dass diese Funktionen (nextSection, previuosSection) innerhalb des onPress-Handlers nur beim ersten Klick aufgerufen werden und bei weiteren Klicks nicht wieder (der onPress-Handler selbst wird aber aufgerufen). Woran könnte das liegen? Ich finde den Haken nicht, brauche aber schnell Hilfe

Ausprobieren könnt ihr das im Kapitel 1 (Einleitung), da gibt es mehrere Abschnitte...

Ich hoffe, ihr findet etwas und danke euch schon im Voraus für eure Mühe!!!
Caddy
Angehängte Dateien
Dateityp: rar jpg.rar (36,5 KB, 4x aufgerufen)

Geändert von Caddy (05-02-2005 um 13:23 Uhr) Grund: fehlende Info
Caddy ist offline   Mit Zitat antworten
Alt 05-02-2005, 14:46   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das Script ist wohl etwas zu umfangreich, um mal eben den Bug zu finden... Taste dich doch einfach mal an den Fehler heran, indem du dir bspw. zuerst mal mit traces alle section-Variablen ausgeben lässt incl. der Inhalte der Arrays wie z.B. arraySectionBars etc. Dann müsstest du ja bei allen Klicks im Ausgabefenster sehen, wo das Problem liegt...
  Mit Zitat antworten
Alt 05-02-2005, 16:49   #3 (permalink)
caddy
 
Benutzerbild von Caddy
 
Registriert seit: Jan 2005
Beiträge: 7
Unhappy ja, aber...

Danke für den Tipp. Leider habe ich das schon getan. Das Problem ist ja auch nicht, dass irgendwelche Daten fehlen, sondern dass die Funktion einfach nur einmal aufgerufen wird und beim nächsten Mal nicht mehr... Wie kann denn so was sein? Kann die irgendwie verdeckt werden?
Caddy ist offline   Mit Zitat antworten
Alt 06-02-2005, 12:51   #4 (permalink)
caddy
 
Benutzerbild von Caddy
 
Registriert seit: Jan 2005
Beiträge: 7
Talking Problem gelöst

Juchhu, habe den Fehler gefunden. Es handelte sich um eine Überlagerung von Variablennamen, weil ich die Variablen innerhalb der Funktion nicht korrekt deklariert hatte.

Die Funktion sah so aus (auf _level0):

function nextSection()
{
nextSectionIndex = selectedSectionIndex + 1;
nextSection = arraySectionBars[nextSectionIndex];

changeSection(nextSection);

isLastSection = arraySectionBars.isLastElement(nextSectionIndex);
return isLastSection;
}


Bei Aufruf der Funktion nextSection() wird in dieser eine Variable mit dem Namen nextSection angelegt. Da ich diese Variable ohne das Schlüsselwort 'var' deklariert habe, ist sie auch noch außerhalb der Funktion gültig. Da Flash aber auch Funktionen in Variablen speichert (sieht man beim Debuggen), wurde die Variable nextSection, die zunächst die Funktion enthielt, überschrieben durch die Variable innerhalb der Funktion und enthielt dann einen Movieclip. Damit war die Funktion nicht mehr erreichbar.

Lösung:

function nextSection()
{
var nextSectionIndex = selectedSectionIndex + 1;
var nextSection = arraySectionBars[nextSectionIndex];

changeSection(nextSection);

var isLastSection = arraySectionBars.isLastElement(nextSectionIndex);
return isLastSection;
}


Alle Variablen, die nur innerhalb der Funktion gültig sein sollen, unbedingt mit Schlüsselwort 'var' deklarieren!

Geändert von Caddy (06-02-2005 um 12:53 Uhr)
Caddy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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 00:35 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele