Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash CS3 Professional

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-11-2008, 13:42   #1 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
MC als Button, Listener Problem

Hallo Leute,

ich versuche mich momentan auf AS3.0 umzustellen und habe gerade ein dummes Problem.

Ich habe einen MC mit einem Tweening innen von Frame 19 - 33.
Ich möchte nun diesen MC als "Button" nutzen und einen Mouseover und MouseOut Effekt erzeugen.

Früher in AS2 wars kein Problem.
Wenn ich aber das Ganze auf AS3 versuche umzuschreiben, funktioniert es nur teilweise.

Hier mal mein Code:
ActionScript:
  1. btStart.addEventListener(MouseEvent.MOUSE_OVER, startEffekt, false, 0, true);
  2. btStart.addEventListener(MouseEvent.MOUSE_OUT, startEffektout, false, 0, true);
  3.  
  4. function startEffekt(evt:MouseEvent):void {
  5.     btStart.addEventListener(Event.ENTER_FRAME, nextFrameFunction, false, 0, true);
  6. }
  7. function nextFrameFunction(evt:Event):void {
  8.     btStart.nextFrame();
  9.     if(btStart.currentFrame == btStart.totalFrames) {
  10.         btStart.removeEventListener(Event.ENTER_FRAME, nextFrameFunction);
  11.     }
  12. }
  13.  
  14. function startEffektout(evt:MouseEvent):void {
  15.     btStart.addEventListener(Event.ENTER_FRAME, prevFrameFunction, false, 0, true);
  16. }
  17. function prevFrameFunction(evt:Event):void {
  18.     btStart.prevFrame();
  19.     if(btStart.currentFrame == 19) {
  20.         btStart.removeEventListener(Event.ENTER_FRAME, prevFrameFunction);
  21.     }
  22. }

Das Ganze funktioniert auch, wenn man das gesamte Tweening abwartet. Wenn man aber die Mouse vor Bild 33 wieder wegfährt, macht das Skript seltsame sachen.

Was ist an meinem COde falsch???

Grüße dj

Geändert von deejayy (09-11-2008 um 15:24 Uhr)
deejayy ist offline   Mit Zitat antworten
Alt 09-11-2008, 14:53   #2 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
eine Funktion innerhalb einer Funktion zu deklarieren ist kein guter Stil. Entzerre das mal.
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 09-11-2008, 15:25   #3 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
okay, ich hab die funktionen nun "entwirrt".
Problem ist aber weiterhin das selbe.

Es funktioniert, wenn die Animation im MC komplett abgespielt wird.
Sobald man aber früher (druch ein MouseOut Event) unterbricht, bleibt der Button stehen und läuft nicht wieder zurück.

Geändert von deejayy (09-11-2008 um 15:26 Uhr)
deejayy ist offline   Mit Zitat antworten
Alt 09-11-2008, 15:42   #4 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
zur Einfachheit habe ich nun den Button vereinfacht und er hat nur noch eine Animation von Frame 1 bis 10 (also keine Animation vorher).

Das Script ist somit allgemeiner geworden. Das Problem ist aber immer noch das gleiche.

****EDIT****

ICh habe das Problem gelöst. nun das Script, welches funktioniert!

ActionScript:
  1. btStartButton.addEventListener(MouseEvent.MOUSE_OVER, startEffekt, false, 0, true);
  2. btStartButton.addEventListener(MouseEvent.MOUSE_OUT, startEffektout, false, 0, true);
  3. btStartButton.addEventListener(MouseEvent.CLICK, startClick, false, 0, true);
  4.  
  5. function startEffekt(evt:MouseEvent):void {
  6.     btStartButton.removeEventListener(Event.ENTER_FRAME, prevFrameFunction);
  7.     btStartButton.addEventListener(Event.ENTER_FRAME, nextFrameFunction, false, 0, true);
  8. }
  9. function nextFrameFunction(evt:Event):void {
  10.     btStartButton.nextFrame();
  11.     if(btStartButton.currentFrame == btStartButton.totalFrames) {
  12.         btStartButton.removeEventListener(Event.ENTER_FRAME, nextFrameFunction);
  13.     }
  14. }
  15.  
  16. function startEffektout(evt:MouseEvent):void {
  17.     btStartButton.removeEventListener(Event.ENTER_FRAME, nextFrameFunction);
  18.     btStartButton.addEventListener(Event.ENTER_FRAME, prevFrameFunction, false, 0, true);
  19. }
  20. function prevFrameFunction(evt:Event):void {
  21.     btStartButton.prevFrame();
  22.     if(btStartButton.currentFrame == 1) {
  23.         btStartButton.removeEventListener(Event.ENTER_FRAME, prevFrameFunction);
  24.     }
  25. }
  26.  
  27. function startClick(evt:Event):void {
  28.     /*Anweisung für was bei Mausklick*/
  29. }

Geändert von deejayy (09-11-2008 um 19:27 Uhr)
deejayy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
listener, mouseout, mouseover

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 21:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele