# Frage zu Funktionen



## WengPeng (24. Jan 2012)

Hi Leute,

ich hab hier ein kleines Problem mit einer Funktion und weiß nicht wie ich das Problem lösen kann.
vielleicht könnt ihr mir ja helfen.

also als erstes ich nutze die effekt bibliothek von scriptaculous, und es geht um den Grundeffekt move.by

Ich nutze diesen effekt bei einen mouseover. das problem ist da es relative angaben für die bewegung ist, das wenn man schnell die maus darüber und wieder wegbewegt das sich die ebene total verschiebt.

also hab ich mir gedacht ich setze eine globale variable die immer erst prüft ob es auf oder zu ist und nur wenn der zustand gegeben ist soll er den befehl ausführen. also ich will das die mouseOut funktion erst ausgeführt wird wenn die mouseOver funktion fertig ist. 
ich hab das folgendermaßen im code geschrieben.


```
var auf =  false;
var zu = true;

// Mouse OverFunktion für die Produktbeschreibung
   function mouseOver_produktlisting(nr) {
            if(auf == false & zu == true) {
		new Effect.Fade( nr, {duration:0.3, from:0.0, to:1.0} );
		new Effect.MoveBy('name_'+nr, -275, 0, {duration:0.3, transition:Effect.Transitions.sinoidal});
		new Effect.MoveBy('name_'+nr, -275, 0, {duration:0.3, transition:Effect.Transitions.sinoidal});
		auf = true;
		zu = false;
            }
	    else {
		    mouseOver_produktlisting(nr);
		    }
   }
   
      function mouseOut_produktlisting(nr) {
            if(auf == true & zu == false) {
		new Effect.Opacity( nr, {duration:0.3, from:1.0, to:0.0} );
		new Effect.MoveBy('name_'+nr, 275, 0, {duration:0.3, transition:Effect.Transitions.sinoidal});
		new Effect.MoveBy('name_'+nr, 275, 0, {duration:0.3, transition:Effect.Transitions.sinoidal});
		auf = false;
		zu = true;
            }
		else {
		    mouseOut_produktlisting(nr);
		    }
   }
```

aber so funktioniert das auch nicht. 
kann mir jemand vielleicht mal einen tip oder denkanstoß für dieses Problem geben?

gruß WengPeng


----------



## Gast2 (24. Jan 2012)

Du bist im falschen Forum.
Java hat mit Javascript rein gar nichts am Hut


----------



## Illuvatar (24. Jan 2012)

Verschoben.


----------



## WengPeng (24. Jan 2012)

oh sorry mein fehler 

danke fürs verschieben


----------



## HimBromBeere (25. Jan 2012)

```
if(auf == false & zu == true) {
```
Ist zwar ein Weilchen her, dass ich mit Javascript was am Hut hatte, aber das sollte eigtl. so heißen:

```
if(auf == false && zu == true) {
```
Also mit einem zusätzlichen &-Operator. Das hätten dir die JAVA-Leute aber auch sagen können, aber die tun halt gerne so, als würden beide (ich sag jetzt mal Sprachen auch wenn das nicht ganz richtig ist...) absolut ÜBERHAUPT NICHTS gemeinsam haben... also noch weniger als Äpfel und Birnen gemeinsam haben  (und sogar Äpfel und Birnen lassen sich vergleichen)


----------



## WengPeng (25. Jan 2012)

Danke HimBromBeere für deine schnelle Antwort.
Leider funktioniert das auch nicht. 
So wie der mouseOut anfängt verschiebt er den Layer von seiner aktuellen Position, so entfernt sich der Layer immer weiter von der Position zu der er eigentlich hin soll .
Gibt es nicht vielleicht noch einen anderen Ansatz wie ich an das Problem heran gehen kann? 
Die Logik unterscheidet sich zwischen den Sprachen sicher nicht nur der syntax wird anders sein. 



JAVA kann ich überhaupt nicht aber mir fällt dazu immer die Java Commercial ein. aber die kennt hier sicher schon jeder.


----------



## Gast2 (25. Jan 2012)

> Also mit einem zusätzlichen &-Operator. Das hätten dir die JAVA-Leute aber auch sagen können, aber die tun halt gerne so, als würden beide (ich sag jetzt mal Sprachen auch wenn das nicht ganz richtig ist...) absolut ÜBERHAUPT NICHTS gemeinsam haben... also noch weniger als Äpfel und Birnen gemeinsam haben (und sogar Äpfel und Birnen lassen sich vergleichen)


Beide Varianten sind möglich, und das haben beide Sprachen gleich  Das wars dann aber auch schon fast :bae:

EDIT:


> JAVA kann ich überhaupt nicht aber mir fällt dazu immer die Java Commercial ein. aber die kennt hier sicher schon jeder.


Macht nichts, dein Problem hat wie gesagt mit Java nichts zu tun. Wende dich da besser an nen JS Forum.


----------



## HimBromBeere (25. Jan 2012)

Mir ist während meiner kurzen Abwesenheit noch ein Ansatz eingefallen (da ich nicht weiß, wie dieses Effekt-Zeugs arbeitet, ist das jedoch rein hypothetisch). Sofern diese Bibliothek ähnlich wie AJAX arbeitet, wäre es denkbar, dass Code, den du NACH dem Methodenaufruf aufgeschrieben hast, trotzdem vor Erledigung desselben ausgeführt wird. Das macht man normalerweise, um Dienste im Internet mehr oder weniger parallel und unabhängig voneinander anfragen zu können (senkt die Gesamtlaufzeit erheblich). Setzt aber voraus, dass alle Anfragen auch wirklich unabhängig voneinander sind, was sie in deinem Fall eben nicht sind. Das heißt Anfrage 2 soll erst gemacht werden, wenn das Ergebnis aus Anfrage 1 angekommen und idealerweise auch noch verarbeitet ist. Sollte diese Bibliothek also tatsächlich diesen asynchronen Ansatz implementieren (was ich aber irgendwie stark bezweifle), sollte da auch irgendwo eine CallBack-Funktion verfügbar sein, die ausgeführt wird, wenn die Anfrage komplett durchgearbeitet wurde. Da müsste dann dein auf = false, zu = true oder was auch immer rein.

Ist wie gesagt nur eine fixe (und ich geb zu extrem unwahrscheinliche Idee)... aber was anderes fällt mir imho nicht ein...:shock:


----------



## Evil-Devil (25. Jan 2012)

Soll sich dein Element solange bewegen wie es den MouseOver hat oder nur einmalig bis zu der Stelle?
Ansonsten beschreibe den gewünschten Effekt/Vorgang genauer, dann ist es einfacher zu helfen. Aktuell weiß man nur das sich ein Element beim Mouse Over bewegen soll.

Das zu lösen ist an sich relativ einfach, wenn du mit dynamischen Events arbeitest.


----------

