Es werden externe jpg-Bilder geladen. Funktioniert soweit. Mit der Funktion "Einblenden" sollen sie langsam eingefadet werden. Dazu in jeweils die setInterval-Zeile. Das erste Bild blendet er hübsch langsam ein. Doch bei jedem klick auf links oder rechts halbiert (?) sich die Einblend-Zeit, oder es geht zumindest immer schneller. Kann mir jemand sagen, warum?
Leider verstehe ich es nicht ganz. Also ich vermute mal, mein ursprüngliches Problem hängt damit zusammen, dass das Interval einfach im Hintergrund weiterläuft, auch wenn der Alpha-Wert 100 schon erreicht ist, richtig? Aber nach welchem Schritt bricht denn clearInterval das Ganze ab?
Komisch ist nämlich, dass die ganze Geschichte nicht funktioniert, wenn ich nach Zeile 17 noch ein clearInterval einfüge oder auch hier interval1() aufrufe. Da bleibt er bei (schätzungsweise) alpha=3 stehen.
Beiträge: 2855 Wohnort: Köln Registriert: Oct 2007
Also du musst überall den gleichen Interval-namen nutzen, wo du ein interval setzt, da ja alle die gleiche Funktionen ansprechen.
In der Funktion "Einblenden" (warum sitzt die eg in der onLoad-Funktion - das ist eg nciht zulässig funktionen ineinander zu verschachteln) musst du dann das Interval natürlich erst löschen, wenn dein Alpha-wert bei 100 angekommen ist.
also:
Ich versuche seit Tagen wenigstens nachzuvollziehen, was er macht. Ich schau mir beispielsweise im Debugger den Wert von alpha an. Ich habe die Zeit in dem Intervall so verlangsamt, dass ich jeden einzelnen Schritt sehe. So ändert sich der Wert von alpha im ersten Schritt von 0 auf 2,73... undzerquetschte. Das sind nie ganze Zahlen. Wieso denn das?
Dann hab ich versucht, mit clearInterval zu arbeiten (Auch Deine Variante). Egal an welche Stelle ich das geschrieben habe und wie ich den Code angepasst habe, entweder der alpha-Wert wird nicht weiter erhöht, bleibt also bei 0 stehen oder er rennt über 100 hinaus und immer weiter. Ich kapier´s nicht.
Ich hab jetzt folgende Version, die is mit dem Ausgangscode fast identisch:
So funktioniert es erst einmal, allerdings läuft der alpha-Wert über 100 hinaus bis man auf "rechts" klickt. Ist das schlimm, oder kann man das so lassen?
Ich glaube, in der ersten Version, die ich gepostet habe, überlagerte sich das Intervall in Zeile 14 des Ausgangscodes mit den Intervallen, die bei if bzw. else ausgelöst wurden.
Beiträge: 2855 Wohnort: Köln Registriert: Oct 2007
Mhh...
Das er das nicht mit glatten Zahlen amcht, irritiert mich jetzt auch, aber das ist ja nicht das Problem!
Mit der Funktion hast du dich dann wohl an das falsche Thema gehalten. Schreib Funktionen IMMER einzelnd - die in andere, wie in deinem Fall die onLoad.
Hab deinen Code mal so geändert wie ich meinte - konnte es natürlich nur bedingt testen, da ich keine Testelemente/mc etc hatte, aber so funktioniert es:
Ich hab mal Deinen Code probiert, da is wieder das ursprüngliche Problem, dass sich die Einblend-Zeit immer geringer wird.
Also hab ich meinen Code gelassen und nur wie Du die Einblenden-Funktion aus der onLoad rausgenommen. Wenn ich clearInterval deaktiviere, funktioniert alles, nur der alpha-Wert erhöht sich die ganze Zeit. Sobald ich clearInterval aktiviere, bleibt das 2. Bild bei alpha=0 stehen. Warum auch immer. Was passiert denn, wenn alpha immer weiter erhöht wird? Sonst lass ich das halt so...
Ha, mir is was aufgefallen: Dein Code funktioniert, wenn man langsam auf rechts bzw. links klickt. Sobald man schnell hintereinander klickt (und das hatte ich zum Testen immer getan) nimmt er das wahrscheinlich als Doppelklick und weist dem mc den alpha-Wert 100 zu, und zwar immer wieder (jedenfalls wird die Liste der getracten alpha-Werte immer länger).
Wie kann ich ihm sagen, dass der Doppelklick kein Doppelklick ist, sondern zwei einzelne Klicks?
Beiträge: 2855 Wohnort: Köln Registriert: Oct 2007
ok, dass hatte ich vergessen - du musst jeweils ein clear-Interval an den Anfang der Buttons schreiben - sodass es kein aktives Interval gibt, wenn ein neues gesetzt wird.
ActionScript:
1 2 3 4
links.onRelease = function(){
clearInterval(interval1);
if (_global.bildcounter != 1){
[...]
public Weltformel(Problem){
if (Problem gelöst) return Lösung;
else Weltformel(kleiners Problem);
}