Flashhilfe.de - Flash Community

on(rollOver) Zeitverzögert. Delay einbinden - wie? [Flash 9]

 


AntwortenRegistrieren Seite1  

myaik#1
Benutzerbild von myaik
Beiträge: 3
Registriert: Apr 2012

02.04.2012, 16:00

Hallo zusammen,

ich suche schon seit Stunden in Foren nach der Möglichkeit, die normale "on(rollOver)" Funktion mit einer Reaktionszeit von sagen wir mal 1.000ms zu definieren.

Es handelt sich um ein expandable Werbemittel, welches auf Click sich öffnet, oder eben bei einem MouseOver. Jedoch muss bei MouseOver eine Zeitverzögerung von 0,5 Sekunden eingebunden werden. Da sich ansonsten das Werbemittel ständig öffnet, nur weil man innerhalb der Website kurz über den Banner wischte.

Angelegt ist bereits alles, einzig das zeitverzögerte Akzeptieren der rollOver Funktion fehlt leider noch. Das AS2 ist nicht wirklich umfangreich. Das Werbemittel beginnt sich ab dem 5ten Frame zu öffnen. Im 4ten Frame ist ein stop();. Das AS ist auf einen invisible Button gelegt, welcher die ersten 4 Frames sichtbar ist. Hier der entsprechende Code:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
on (release) {
     gotoAndPlay(5);
     tmpCol = "javascript:adlayerCol();";
     getURL(tmpCol, "_self");
}

on (rollOver) {
     gotoAndPlay(5);
     tmpExp = "javascript:adlayerExp();";
     getURL(tmpExp, "_self");
}


Leider bin ich nicht so geübt in AS und ich dachte, das würde irgendwie ganz leicht gehen, indem ich einfach irgendwo innerhalb der on(rollOver) sowas schreiben würde wie:
delay = 500;

Ihr versteht was ich meine. ;)
Könnte mir bitte jemand auf die Sprünge helfen? Danke!


PS: Bitte bei Lösungsvorschlägen nicht nur sowas wie "SetTimer" oder so nennen, denn ich bin schon über viele Begriffe gestoßen, nur nicht fähig genug daraus etwas zu konstruieren, was auch funktioniert. :/
Geändert von myaik am 02.04.12 um 16:04 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


greemo25#2
Benutzerbild von greemo25
Beiträge: 108
Wohnort: Hannover
Registriert: Jan 2010

02.04.2012, 17:29

Wenn Du dein Skript nicht ändern willst leg doch einfach das Werbemittel auf Frame 30, dann hast Du von frame 5-30 ne "leere" Sekunde.
myaik#3
Benutzerbild von myaik
Beiträge: 3
Registriert: Apr 2012

Themenautor/in

02.04.2012, 18:29

Hi,

diese Lösung hatte ich auch schon mal angedacht, jedoch ist damit nicht das Problem behoben, dass wenn die Maus nur kurz drüber fährt, das Werbemittel beginnt sich zu öffnen. Beginnt zwar verzögert, so wie es sein soll, also auf den ersten Blick nicht zu merken, aber in deinem Beispiel wäre es dann wie folgt:

Das Werbemittel ist eingebunden auf einer Seite, man will z.b. mit der Maus hoch zur Navi, erwischt ausversehen das Werbemittel und 1sec. später, geht es dann "grundlos" auf. Hoffe du verstehst, was ich meine. Ich hätte daher gerne wirklich die exakte Möglichkeit, dass der Mauszeiger sozusagen 1 Sekunde oder eben 0,5 Sekunden sich im Werbemittel befinden muss, nur dann soll er via MouseOver aufgehen.

Also das Script darf schon angepasst/geändert werden, sofern sich eben an den Funktionalitäten nichts ändert, da die aktuell verwendeten Code-Schnippsel vom Advertise-Partner vordefiniert sind.

Danke trotzdem für deine schnelle Antwort. LG
Geändert von myaik am 02.04.12 um 18:36 Uhr
myaik#4
Benutzerbild von myaik
Beiträge: 3
Registriert: Apr 2012

Themenautor/in

12.04.2012, 14:46

Hallo zusammen,

leider bekam ich hier über das Forum keine weiteren Tipps oder Hilfestellungen, daher poste ich mal meine aktuelle Lösung, welche zumindest für meinen Anwendungsfall geholfen hat.

Im ersten Frame habe ich ein Keyframe mit einem stop(); und einen unsichtbaren Link mit folgenden AS2 Schnippsel belegt:
ActionScript:
1
2
3
4
5
6
7
8
9
on (rollOver) {      
    gotoAndPlay(2);
    tmpExp = "javascript:adlayerExp();";
    FSCommand('adexpand');
}
       
on (rollOut) {          
    gotoAndStop(1);
}



In Frame 3 habe ich wieder ein Keyframe mit dem Delay eingebunden:
ActionScript:
1
2
3
4
5
6
7
8
stop();

iid = setInterval(this, "waitFunction", 500);

function waitFunction(){      
    clearInterval(iid);      
    gotoAndStop(4);
}



Und im Frame Nummer 4 wieder ein unsichtbaren Link mit folgenden AS2:
ActionScript:
1
2
3
4
5
6
7
8
9
on (rollOver) {         
    gotoAndPlay(5);
    tmpExp = "javascript:adlayerExp();";
    FSCommand('adexpand');
}

on (rollOut) {         
    gotoAndStop(3);
}



Mit anderen Worten habe ich nun eine Art "Prüfung" eingebunden, im ersten Frame wird getestet, ob eine Maus im Werbemittel ist, wenn ja, Springe zu dem Delay. Nach dem Delay (500ms) springe zu Frame 4, wo nochmal geprüft wird, ob sich die Maus immernoch im Banner befindet. Wenn ja, starte die Animation, wenn bis dahin die Maus nicht mehr im Banner ist, springe wieder zum Delay.

Vielleicht nicht gerade die sauberste Lösung, aber so konnte ich zumindest einen funktionierenden Ansatz erstellen, welcher ein Mouseover wirklich nur dann ausführt, wenn er 0,5 Sekunden im Banner war.
Geändert von myaik am 12.04.12 um 14:50 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016



AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de