Scriptaculous Effekt afterFinish auf eigene Klasse zugreifen

socke999

Erfahrenes Mitglied
Hallo, ich arbeite mit prototype und Scriptaculous Effecte.

Ich hab mir da eine eigene Klasse definiert um so eine kleine Diashow zu machen.
Und zwar speichere ich in dieser Klasse über die Variabel namens "index" wo gerade ich mich befinde.

Dann hab ich noch eine Mehtode (Funktion) in dieser Klasse, mit dem namen showImage().

So weit so gut, die struktur wie ich sie gemacht habe passt soweit und funktioniert auch.

NUN benutze ich in meiner showImage() Funktion einen Effekt von Scriptaculous und dann will ich dass bei afterFinish noch etwas gemacht wird (Muss bei afterFinish sein, geht nicht anders), dafür muss ich aber auf die eigene Klasse zugreifen (this), denn ich brauche den wert von der Variabel index.

Hört sich jetzt vielleicht etwas kompliziert an ist aber so gemeint:
Ich erstelle einklasse mit hilfe von Prototype version 1.6
Code:
var Galerie =  Class.create({

	initialize: function(i)
	{
		this.index = i;
	},
	
	showImage()
	{
	
		new Effect.Morph('Picture', {style: "width:200px", duration: 1,  afterFinish:  function()
			{
				alert("Hier sollte nun der aktuelle IndexWert ausgegeben werden: "+this.index);
			}
		
		}); 

	}
							
});

Der fehler ist mir schon klar wo er liegt:
Code:
alert("Hier sollte nun der aktuelle IndexWert ausgegeben werden: "+this.index);
this.index: so kann man nicht zugreifen auf die Klasse wie ich es will, denn this bezieht sich nicht auf meine eigene Klasse sondern auf new Effect().
Wie kann ich dass aber nun so machen dass ich irgendwie auf meine Klasse zugreifen kann?

Besteht die möglichkeit das über eine Parametermitgabe zu lösen?
Code:
		new Effect.Morph('Picture', {style: "width:200px", duration: 1,  afterFinish:  function(INDEX_PARAMETER)
			{
				alert("Hier sollte nun der aktuelle IndexWert ausgegeben werden: "+INDEX_PARAMETER);
			}
Müsst schon irgendwie gehen, nur wie gibt man den Parameter mit?

Gibts sonst ne möglichkeit?
 
Moin Socke,

übergebe de Morph-Funktion das Galerie-Objekt als Parameter, dann kannst du innerhalb der afterfinish-Funktion darauf zugreifen :)
Code:
	showImage:function()
	{
		new Effect.Morph('Picture',
                     {style: "width:200px", 
                      duration: 1,  
                      objekt:this, 
                      afterFinish:  function()
			                               {
                                      alert("Test: "+ this.objekt.index);
			                               }
		
		                  }
                    ); 

	}
 
Zuletzt bearbeitet:
Ja genau, so ist funktioniert es perfekt!

Wusste gar nicht das man so noch zusätzliche sachen übegeben kann ...
Kann man da alles mögliche noch übegeben?

Danke vielmals!
 
Zurück