| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 61
| Anonyme Funktion mit Dynamischem Inhalt
Hallo Leute. Situation ist folgende: Ich habe mehrere Buttons, die jeweils den gleichen Sprite erscheinen lassen (natürlich in anderen Konfigurationen). Es soll aber immer nur einer dieser Sprites zu sehen sein. Dafür möchte ich eine ReleaseOutside-Funktionalität einbauen. Wie ich das mache ist klar. Allerdings möchte ich nicht für jedes Sprite eine eigene funktion scheiben müssen. Statt dessen habe ich mir gedacht eine anonyme Funktion zu scheiben, die dynamisch für das aktuelle Sprite definiert wird. Damit es Deutlicher wird ein Beispiel: Code: myBtn.addEventListener(MouseEvent.CLICK, openSpriteHandler);
function openSpriteHandler(evt:Event){
var sp:Sprite = new Sprite();
//...irgendein Code
stage.addEventListener(MouseEvent.MOUSE_UP,
function(event:MouseEvent){
if (event.target == sp|| cal.contains(event.target)){
// Maus ist innerhalb des Sprites
}else{
// Maus ist ausserhalb des Sprites
sp.visible = false;
// Code zum löschen des Sprites
}
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
});
sp.visible = true;
}
function mouseUp(evt:Event){
// Dieser Code spielt keine Rolle
} Bisher bekomm ich Compilerfehler, weil er die variable sp nicht kennt. Vielen Dank im Vorraus. Geändert von Selius (31-07-2009 um 17:13 Uhr) |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 1.197
|
Das Problem ist, daß die Funktion im Listener deklariert wird. Ich bin mir aber nicht sicher, wo genau sie dann gültig ist... aber event.target ist dann immer die Stage, es wird also schon deshalb nicht so funktionieren, wie Du es planst.
__________________ EDV = Ende Der Vernunft Geändert von hmpf (31-07-2009 um 18:44 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 61
|
Das ist ne ganz normale deklaration einer anonymen Funktion. Statt, das ich ne Funktion per Namen an den Listener übergebe. Deklariere ich die Funktion direkt. Das mach sinn, weil ich die Funktion nur in diesem Zusammenhang brauche. |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Ich würde halt gerne wissen, wie du dynamisch eine Funktion erstellst. Ich verstehe deinen Ansatz halt nicht...
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Jul 2009
Beiträge: 61
|
So, nach einiger testerei an einfachen Beispielen habe ich festgestellt, das es doch funktioniert Bei der Definition einer Anonymen funktion kann ich auf die Variablen der umgebenden Funktion zurück greifen. Code: btn.addEventListener(MouseEvent.CLICK, openSpriteHandler);
function openSpriteHandler(evt:Event){
var sp:Sprite = new Sprite();
sp.addChild(new ShowMe());
//...irgendein Code
stage.addEventListener(MouseEvent.MOUSE_UP,
function(event:MouseEvent){
trace(event.target);
if (event.target == sp){
// Maus ist innerhalb des Sprites
}else{
// Maus ist ausserhalb des Sprites
sp.visible = false;
sp.parent.removeChild(sp);
// Code zum löschen des Sprites
}
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
});
sp.visible = true;
this.addChild(sp);
}
function mouseUp(evt:Event){
// Dieser Code spielt keine Rolle
} ![]() Also muss ich mir doch noch einen anderen Weg einfallen lassen. |
| | |
| | #6 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
| ActionScript:
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| anonyme, funktion, releaseoutside |
| Themen-Optionen | |
| Ansicht | |
| |