Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-04-2006, 14:32   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 18
FlashPlayer aktualisiert nicht immer und lädt nicht immer

Frohe Ostern, allen Flashern! Ich hab die folgende Probleme:

1. wenn ich von einem MC (der die Funktion eines Buttons hat - 2 Frames für jeweils MouseOver/Out/Press, die über button_mc.onRollOver/Out/Press gewechselt werden) eine Funktion, die Movies auf _levelXY lädt, aufrufe (auf Level XY gibt es definitiv keine weitere MCs/.SWF geladen), wird der externe SWF nicht immer beim ersten Klicken geladen, manchmal erst beim 2. oder 3. Mouseklick. Das Problem weist Unregelmässigkeit auf.

2. wenn ich viele solche (pseudo)Buttons (siehe oben), also MCs, erstellt habe, und die Maus sehr schnell über diese hin und her bewege, werden diese zu ihren entsprechenden MouseOver, dementssprechend MouseOut Zustand (Frame2, Frame1) nicht gewechselt, sodass mehrere MCs in ihrem MouseOver Zustand bleiben. Liegt es daran, dass ich die Maus schneller als die eingestellte Bildrate (25fps) über die MCs bewege, und die onRollOver/Out/Press nur alle 1/25 Sekunde ausgeführt werden?
(Soweit ich gelesen habe wird updateAfterEvent für onClipEvent() benutzt und ich gehe davon aus, dass es für button_mc.onRollOver/Out/Press nicht anwendbar ist. Die einzige Möglichkeit, die mir einfällt ist bei jedem onRollOver für jeden Button eine for() Schleife einzubauen, die die anderen Buttons auf ihrem normal Zustand setzt - sprich MouseOut, finde ich aber irgendwie nicht besonders elegant)

3. mein Hauptfilm hat keine Objekte, die höher als Level 0 sind. Mittels loadMovieNum() lade ich eine externe .swf Datei auf _layer10 zB, aber wenn ich dynamisch ein MC auf _layer1000 generiere, wird er immer noch von der extern geladenen .swf Datei, die unter ihm steht, verdeckt. Woran liegt das?

4. gibt es andere Möglichkeit Daten auf dem Benutzerrechner zu speichern, ausser wenn der .swf im Browser läuft und über javascript Funktion Cookies geschrieben werden? Ich brauche nämlich Bookmarks zu speichern.

5. und letztes: warum wird onRollOut nicht ausgeführt, wenn man auf einem MC geklickt hat, aber die Maustaste nicht losgelassen hat?

Vielen Dank im voraus!
citizen ist offline   Mit Zitat antworten
Alt 17-04-2006, 14:51   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
auf _levelXY lädt
Wozu lädst du auf Level? Es reicht doch, mit loadMovie in MCs zu laden, die auf Tiefen von Level 0 liegen...

Zitat:
Mittels loadMovieNum() lade ich eine externe .swf Datei auf _layer10
Überflüssig wie ein Kropf, siehe vorherigen Satz...

Zitat:
gibt es andere Möglichkeit Daten auf dem Benutzerrechner zu speichern
Offline kannst du mit der Zusatzsoftware Zinc Dateien speichern, online geht das bspw. mit einer Middleware wie PHP und einem Server. Und als letzte Möglichkeit kannst du noch local SharedObjects nutzen, schau mal in die Flash-Hilfe.
  Mit Zitat antworten
Alt 17-04-2006, 15:27   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 18
Danke für die Antwort, aber verstanden habe ich nicht wirklich warum ich loadMovie() nehmen soll und nicht LoadMovieNum() und warum das das Problem mit dem unregelmässigem Laden von .swfs lösen wird sowie das fehlerhafte Überdecken.
citizen ist offline   Mit Zitat antworten
Alt 17-04-2006, 17:17   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
_level0, also die Hauptzeitleiste hat etwas über eine Million referenzierbarer Tiefen.

Auf diesen Tiefen kann man MCs erstellen oder attachen. Die Tiefen der Bühne nennt man Ebenen, sie liegen bei Tiefenwerten ab -16383, wobei die Bühne mit einer Tiefe von -16384 am "tiefsten" liegt. Alle Ebenen bis Tiefe -1 sind statisch, d.h. MCs auf diesen Tiefen können nicht direkt mit removeMovieClip gelöscht werden. Dazu müssen sie auf eine dynamische Tiefe ab 0 z.B. mit swapDepths geschoben werden.

Zudem kann man wie in deinem Beispiel mit loadMovieNum noch weitere Level als den Level 0 erstellen, wobei jeder Level wiederum seine eigenen Tiefen mitbringt. In der Regel ist das aber ziemlich überflüssig und bei größeren Projekten auch unüberschaubar... Bspw. kannst du zwei MCs auf verschiedenen Leveln nicht mehr "gegeneinander" in der Tiefe verschieben, weil die Level nicht geswappt werden können.

Außerdem kann es passieren, dass du dir mit einem loadMovieNum deine Hauptzeitleiste überschreibst. Am besten löst du deine Nachladeaktionen etwa so:

PHP-Code:
meineButtoninstanz.onRelease = function(){//nach Klicken auf eine Buttoninstanz (ein Instanzname muss im Eigenschaftenbedienfeld gesetzt sein!
   
_level0.createEmptyMovieClip("con",1);//auf der Hauptzeitleiste zur Laufzeit einen leeren MC mit Instanznamen "con" auf Tiefe 1 des Level 0 erstellen
   
_level0.con.loadMovie("meine.swf");//und in den leeren MC einen Film nachladen


Geändert von agedoubleju (17-04-2006 um 17:19 Uhr)
  Mit Zitat antworten
Alt 18-04-2006, 00:07   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 18
Offenbar habe ich Tiefe mit Ebene verwechselt (eine Ebene hat mehrere Tiefen, und es gibt mehrere Ebenen, wobei _level0, diese der Hauptzeitleiste ist.) Das erklärt die falsche Verdeckung, weil ich den mc auf Depth zB 100 von der _root Ebene generiere, aber die externe .swf Datei auf Layer 10 lade.
Woran liegt es dann, dass ein .swf nicht immer mittels loadMovieNum() geladen wird? gibt es eine vernünftige Erklärung dafür?
Zu 2. habe ich gerade die Lösung selber gefunden, und das müsste wirklich die niedrige Framerate sein, da die obengenannten Probleme bei 120 Bilder pro Sekunde nicht auftreten.
Und wie kann man vermeiden, wenn der Benutzer auf einem MC (mit Button Funktion) klickt und die Aktion Release ausserhalb des MCs ausführt (sprich klick, drag, release), dass der MouseOver Zustand aktiv bleibt (es muss MouseOut sein, ist aber nicht der Fall)?

Geändert von citizen (18-04-2006 um 00:13 Uhr)
citizen ist offline   Mit Zitat antworten
Alt 18-04-2006, 00:25   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
dass der MouseOver Zustand aktiv bleibt
Meinst du so etwas wie einen Wechselschalter? Das geht nur auf MCs. Erstell bspw. einen MC mit 4 Schlüsselbildern, gib denen die Bildbezeichner _up, _over, _down und _switched und setz in jeden Frame einen stop.

In den _switched-Frame kommt das Bild des Wechselschalters, dann musst du nur noch einen Event setzen, der zum Frame _switched springt.
  Mit Zitat antworten
Alt 18-04-2006, 00:58   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 18
1MC mit 2 Frames -1. für Mouse Out Zustand (default), 2. für Mouse Over Zustand (auch Maus Press)
Der MC ist auf der Bühne Positioniert, und nicht generiert.
ActionScript steht in externer .as Datei (es darf kein AS auf dem MC direkt angewendet werden)
In der as. Datei steht das:

PHP-Code:
btn_mc.stop();
btn_mc.onRollOver = function()
{
    
btn_mc.gotoAndStop(2); // gehe zum Over Zustand
}
btn_mc.onRollOut = function()
{
    
btn_mc.gotoAndStop(1); //gehe zu Out Zustand
}
btn_mc.onPress = function()
{
    
trace("PRESS BTN");
    
machwas();

Es fehlt natürlich...

PHP-Code:
btn_mc.onRelease = function()
{
    
//mach irgendwas

weil der Mausbutton auch ausserhalb der "btn_mc" Area losgelassen werden kann. Es gibt 2 Möglichkeiten, ich hab aber nirgendwo in der Flashhilfe Prozeduren zur Status Abfragen gefunden - sprich dass ich überprüfe, ob die Maustaste über den "btn_mc" oder ausserhalb losgelassen wurde.
citizen ist offline   Mit Zitat antworten
Alt 18-04-2006, 05:26   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
ob die Maustaste über den "btn_mc" oder ausserhalb losgelassen wurde.
onReleaseOutside
  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 12:54 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele