Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-05-2006, 11:19   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Benztown
Beiträge: 54
Unhappy AS Befehl wird ignoriert

hallo zusammen,

mich plagt als action-script anfänger folgendes problem:

ich habe eine film, der aus 50 frames besteht.
in jedem dieser frames sitzt ein movieclip, welcher eine kleine animation
abspielt. das ganze soll dann selbstablaufend etwa folgenderweise ablaufen:

der film startet mit der ersten animation im ersten frame. nach dem stop dieser animation, geht es dann in der hauptszene weiter zum nächsten frame und die nächste animation läuft ab.
damit das klappt, habe ich in jedem der 50 frames ein actioscript mit folgenden inhalt:

stop();
warte = setInterval(function () { play();clearInterval(warte);}, xxxx);

wobei x in ms genau die zeit ist, wie der movieclip lang ist, der grade abgespielt wird.
es wird also in der szene immer so lange gewartet, wie der mc dauert, um dann einen frame weiter zu gehen.
am ende des 50. frames springe ich dann wieder zurück zu frame 1, damit ich eine schleife habe....

ich weiss, klingt nicht nach dem gelben vom ei und viele werden sich sicher an den kopf fassen, aber ich wusste auf die schnelle nicht, wie ich das sonst realisieren kann ohne weiteres flash-wissen.

das problem ist nun, dass ich einen anfang-button einfügen wollte, welcher es ermöglichen soll den film jederzeit wieder bei frame 1 anfangen zu lassen.

gebe ich dem button aber eine gotoandstop befehl passiert folgendes:

der film springt wie gewollt ins erste frame, allerdings scheint die "warte" funktion des letzten frames noch aktiv zu sein. sprich: er spielt den mc im frame 1 ab, aber mit der falschen noch vom vorherigen frame gültigen zeitangabe und ignoriert die neue einfach. er wartet dann zb nicht 10 sek sondern nur 4 usw...
so gerät natürlich alles durcheinander.
wie kann ich dies nun wieder in ordnung bringen?


ich hoffe ich konnte mich verständlich machen und ihr habt ein nachsehen mit mir

danke schon mal fürs mitlesen und für hilfe oder tipps wäre ich natürlich dankbar.

mfg

michael
michbeck0711 ist offline   Mit Zitat antworten
Alt 17-05-2006, 11:26   #2 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Hi ho!


Also, denke mit SetInterval ist das alles etwas kompliziert. Dadurch ergeben sich Fehler wie der von dir beschriebene. Das einfachste wäre doch, wenn du in jeden deiner Animations MCs am ende ein

PHP-Code:
_parent.nextFrame(); 
Dann brauchst dir auch keie Mühe mit Zeiten machen und so


Gruß,
Dwarf
djdwarf ist offline   Mit Zitat antworten
Alt 17-05-2006, 11:36   #3 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
ist ja schön, dass du wenigstens versucst dein script nur auf der hauptzeitleiste zu verarbeiten. aber was du da machst ist eine sehr wackelige geschichte.
auch wenn setInterval noch von frames abhängt gilt setInterval != onEnterFrame
von daher kannst du dich unter anderen umgebungen als deiner nicht unbedingt darauf verlassen, dass das alles astrein abläuft.
zu deinem problem trotrzdem: du musst den interval löschen. clearInterval()

du kannst das ganze etwas anders machen:
zb könntest du in jede einezelne animation im letzten frame ein script ubnterbringen, welches aufruft:
PHP-Code:
_root.nextFrame(); 
andererseits kannst du das auch alles von aussen beobachten:
eine neue ebene erzeugen, dort in das 1 bil ein script einfügen. darauf achten, dass dass du im 50ten frame ein bild einfügst (wenn das nicht sowieso automatisch passiert) damit das script die 50 frames gültig ist.

dann kannst du jeweils deine mc's ansprechen und eine prozedur entwickeln, welche den currentframe mit den totalframes ins verhähltnis setzt und bei übereinstimmung einen frame weiter gesprungen wird.
so eine kleine tüftelei zb.

Geändert von mojave (17-05-2006 um 11:39 Uhr)
mojave ist offline   Mit Zitat antworten
Alt 17-05-2006, 11:52   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Benztown
Beiträge: 54
@djdwarf


hm,

darauf hätte ich auch wirklich selbst kommen können...
gut, also er geht jetzt am ende des MC's zum nächsten frame wo der nächste
MC beginnt etc.

jetzt ergibt sich aber leider wieder eine neue situation:

wie bekomme ich ihn jetzt noch dazu, brav bei jedem frame erst mal zu stoppen? denn so rennt er mir ja jetzt komplett ein mal durch, da ich ja
PHP-Code:
stop();
warte setInterval(function () { play();clearInterval(warte);}, xxxx); 
nun entfernt habe und mir das stop dann fehlt...
michbeck0711 ist offline   Mit Zitat antworten
Alt 17-05-2006, 11:59   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Benztown
Beiträge: 54
Thumbs up

Zitat:
Zitat von mojave
andererseits kannst du das auch alles von aussen beobachten:
eine neue ebene erzeugen, dort in das 1 bil ein script einfügen. darauf achten, dass dass du im 50ten frame ein bild einfügst (wenn das nicht sowieso automatisch passiert) damit das script die 50 frames gültig ist.

dann kannst du jeweils deine mc's ansprechen und eine prozedur entwickeln, welche den currentframe mit den totalframes ins verhähltnis setzt und bei übereinstimmung einen frame weiter gesprungen wird.
so eine kleine tüftelei zb.

danke mojave für deine antwort, hatte sie leider erst gelesen nachdem ich schon auf das andere posting geantwortet hatte.
dein ansatz klingt logisch und vielversprechend, scheint mir jetzt aber etwas aufwendiger zu sein als der weg mit dem nextFrame befehl. so eine überlegung hätte ich gleich zu anfang machen müsssen, werde sie aber das nächste mal berücksichtigen!
michbeck0711 ist offline   Mit Zitat antworten
Alt 17-05-2006, 12:03   #6 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Zitat:
Zitat von michbeck0711
wie bekomme ich ihn jetzt noch dazu, brav bei jedem frame erst mal zu stoppen?
Du brauchst nur in deinen allerersten Frame wieder ein "stop();" zu setzen. Dann stopt der Film ja und wartet. Der "nextFrame()" Befehl beinhaltet bereits die nötigen stop's. Er führt quasi das gleiche aus wie

PHP-Code:
gotoAndStop(_currentframe+1
Alternativ dazu gibts übrigens auch noch "prevFrame();", falls du das ma brauchst.


Hoffe Dein Problem hat sich dadurch erledigt


Gruß,
Dwarf
djdwarf ist offline   Mit Zitat antworten
Alt 17-05-2006, 12:25   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Benztown
Beiträge: 54
tja hm, nicht ganz

es ist ja so, dass ich gerne hätte, dass er am ende eines mc's 1-2 sekunden wartet....daher bin ich ja auf die ganze blöde prozedur überhaupt erst gekommen. wenn er nicht wartet, ist mir der ablauf einfach etwas zu fix. man soll noch die chance haben, das letzte bild des jeweiligen mc's kurz betrachten zu können bevor es weiter geht, so verläuft es zu natlos.

mojave schrieb vorhin, ich müssen noch einen (weiteren) clearintervall befehl einfügen? wenn ja, und falls das klappt, WO müsste der dann hin...?

danke nochmal


mfg
michbeck0711 ist offline   Mit Zitat antworten
Alt 17-05-2006, 12:42   #8 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Den clearIntervall müsstest du auf deinen Button setzen, damit der aktuelle Countdown gelöscht wird sobalt man den Button betätigt.


Um bei der simplen Weise zu bleiben: langt es nicht am Ende von jeden MC ein paar Schlüssenbilder einzufügen, in denen keine Animation geschieht ... ?
djdwarf ist offline   Mit Zitat antworten
Alt 17-05-2006, 12:50   #9 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Falls das mit den Schlüsselbildern nicht geht, bzw. zu viel Arbeit ist, würd ichs sonst so machen:


irgendwo einmal definieren
PHP-Code:
_root.wartezeit 15
Und dann am Ende der MCs
PHP-Code:

createEmptyMovieClip
("warte_mc",1);
count _root.wartezeit;

warte_mc.onEnterFrame = function() {
    
count--;
    if(
count==0){
            
_parent.nextFrame(); // nun wird erst runtergezählt bevor weiter geschaltet wird
            
delete this.onEnterFrame;
        }
    } 
djdwarf ist offline   Mit Zitat antworten
Alt 17-05-2006, 13:09   #10 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Benztown
Beiträge: 54
Zitat:
Zitat von djdwarf
Den clearIntervall müsstest du auf deinen Button setzen, damit der aktuelle Countdown gelöscht wird sobalt man den Button betätigt.
oh mann, ich seh den wald vor lauter bäumen nicht....die nacht war wohl doch zu lange...
wie müsste der befehl nun genau für den button lauten, damit der countdown gelöscht UND man wieder ins erste frame (root) gelangt?


sorry, bin etwas arg neben der kappe.
michbeck0711 ist offline   Mit Zitat antworten
Alt 17-05-2006, 13:28   #11 (permalink)
Hardstyle DJ
 
Benutzerbild von djdwarf
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 622
Wenn ich mich nicht irre

PHP-Code:
on (release){
clearInterval(warte);_root.gotoAndStop(1);

Klappts denn mit dem countdown Script nich?
djdwarf ist offline   Mit Zitat antworten
Alt 17-05-2006, 15:37   #12 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Benztown
Beiträge: 54
Smile

doch,

jetzt funktionieren beide varianten, ich hatte mich zuerst vertippt...

tausend dank an dieser stelle für eure fixe hilfe,
nächstes mal weiss ich es besser


mfg


michael



*close*
michbeck0711 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 17:15 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele