| |||||||
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: Sep 2006
Beiträge: 620
| Variable Funktionsnamen
Guten Abend zusammen. Ich steh grad etwas auf dem Schlauch mit dem Erstellen von Funktionen mit variablen Namen. Ich möchte mir gerne die Option offen lassen beliebig viele UILoader zu erstellen aber kann die Funktionsnamen nicht richtig vergeben: PHP-Code:
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #2 (permalink) |
| Achim Math.PI Registriert seit: Jul 2001 Ort: cool Colonia
Beiträge: 11.642
| keine vars in der laufzeit erzeugen!!!
das war in as2 nicht anders PHP-Code:
__________________ gruß bloba 2 x onkel² b_d |
| | |
| | #3 (permalink) | ||
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Hmm, will nicht so recht?! Ich denke ich werde das als Klasse definieren. Aber grundsätzlich würde es mich trotzdem interessieren woran es hakt. Edit: Hier bin ich glaub schonmal weiter gekommen: PHP-Code: Zitat:
Zitat:
MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 Geändert von dr monk (06-07-2010 um 17:08 Uhr) Grund: Ergänzung | ||
| | |
| | #4 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
Da fehlt noch das this vor den Funktionsnamen. Beispiel: PHP-Code:
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
| | #5 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
| Code: package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.text.TextField;
import flash.utils.Dictionary;
public class HelloWorld extends Sprite
{
private var _images:Array;
private var _loaders:Array;
private var _thumbs:Array;
public function HelloWorld()
{
initialize();
}
private function initialize():void
{
_images = [];
_loaders = [];
_thumbs = [];
}
private function createThumbNails(urls:Array):Array
{
var loader:UILoader;
for (var i:int = 0; i < urls.length; i++)
{
if (_loaders.length <= i)
{
_loaders[_loaders.length] = new UILoader();
}
loader = _loaders[i];
loader.addEventListener(MouseEvent.MOUSE_UP, loader_mouseupHandler);
loader.source = urls[i];
}
return _loaders;
}
private function loader_mouseupHandler(event:MouseEvent):void
{
var url:String = _images[_loaders.indexOf(event.currentTarget)];
navigateToURL(new URLRequest((url)));
}
}
} Code: package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.text.TextField;
import flash.utils.Dictionary;
public class HelloWorld extends Sprite
{
private var _dict:Dictionary;
private var _images:Array;
private var _loaders:Array;
private var _thumbs:Array;
public function HelloWorld()
{
initialize();
}
private function initialize():void
{
_dict = new Dictionary();
_images = [];
_loaders = [];
_thumbs = [];
}
private function createThumbNails():Array
{
var loader:UILoader;
for (var i:int = 0; i < _thumbs.length; i++)
{
if (_loaders.length <= i)
{
_loaders[_loaders.length] = new UILoader();
}
loader = _loaders[i];
loader.addEventListener(MouseEvent.MOUSE_UP, loader_mouseupHandler);
loader.source = urls[i];
_dict[loader] = _images[i];
}
return _loaders;
}
private function loader_mouseupHandler(event:MouseEvent):void
{
var url:String = _dict[event.currentTarget];
navigateToURL(new URLRequest((url)));
}
}
} Das mit den dynamischen Method closures könnte so aussehen, ist aber ungetestet und so was möchte man auch eigentlich nicht: Code: package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.text.TextField;
import flash.utils.Dictionary;
public class HelloWorld extends Sprite
{
private var _dict:Dictionary;
private var _images:Array;
private var _loaders:Array;
private var _thumbs:Array;
public function HelloWorld()
{
initialize();
}
private function initialize():void
{
_dict = new Dictionary();
_images = [];
_loaders = [];
_thumbs = [];
}
private function createThumbNails():Array
{
var loader:UILoader;
for (var i:int = 0; i < _thumbs.length; i++)
{
if (_loaders.length <= i)
{
_loaders[_loaders.length] = new UILoader();
}
loader = _loaders[i];
loader.addEventListener(MouseEvent.MOUSE_UP, function(event:MouseEvent):void
{
var url:String = _images[i];
navigateToURL(new URLRequest((url)));
});
loader.source = urls[i];
_dict[loader] = _images[i];
}
return _loaders;
}
}
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #6 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Was ich damit ausdrücken wollte, es geht auch einfacher...
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 548
|
Ich gehe davon aus, du hast die Loader nicht per Script erstellt (dann wäre ein Array natürlich das Beste) sondern ziehst Komponenten auf die Bühne und möchstest dazu komfortabel mehrere Listener anfügen? Sind die Namen meinLoader1 und co. dann wirklich Variablennamen? Oder nur Instanznamen die du auf der Bühne vergeben hast? Ist nämlich nicht dasselbe. Ich habs mal vorsichtshalber für letzteres umgeschrieben. Außerdem reicht ein Eventhandler für alle. Von verschachtelten Funktionsdefinitionen rate ich generell ab. Probiers mal so: ActionScript:
|
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Danke erstmal für eure Antworten. Werde das gleich nach meiner Arbeit heute Abend testen. Ich habe so das gefühl, dass es jetzt klappen könnte ![]() Ich meld mich dann nochmal kurz falls es geklappt hat ![]() MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Ich bekomm´s einfach nicht hin... Ich bin mir fast sicher, dass es bei mir an der deklarierung der Funktion liegt. Die Instanznamen der erzeugten UILoader sind immer andere als deren Listener. Wenn ich es bloß schaffen würde die Eventlistener in ein Array zu schreiben um damit die URLs zu laden ![]() Grundsätzlich passt es bei mir ja fast immer. Nur der doofe Funktionsaufruf macht immer einen Strich durch die Rechnung (aus diesem Grund hatte ich ja auch anfänglich versucht einen variablen Funktionsnamen zu erstellen). Hier mal mein Programm was fast funktioniert... und das seit einigen Stunden... arghh... das macht es mit absicht... PHP-Code: Vielleicht weiß wer wie man der Funktion einen Wert mitgeben kann. Und nochmal danke für den Code den ihr gepostet habt. Ich weiß es sehr zu schätzen. MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Ein vereinfachtes Beispiel... Code: <thumbs>
<thumbs target="images/image.jpg" url="thumbs/image.jpg" />
</thumbs> Code: package
{
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.errors.IOError;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.utils.Dictionary;
public class HelloWorld extends Sprite
{
private var _dict:Dictionary;
private var _thumbs:Array /* of flash.display.Loader */;
private var _urlLoader:URLLoader;
public function HelloWorld()
{
initialize("data.xml");
}
private function initialize(url:String):void
{
_dict = new Dictionary();
_urlLoader = new URLLoader();
_urlLoader.addEventListener(Event.COMPLETE, urlLoader_completeHandler)
_urlLoader.load(new URLRequest(url));
}
private function urlLoader_completeHandler(event:Event):void
{
IEventDispatcher(event.target).removeEventListener(event.type, arguments.callee);
var xml:XML = new XML(_urlLoader.data);
_urlLoader = null;
parseList(xml.children());
}
private function parseList(list:XMLList):void
{
_thumbs = [];
for each(var item:XML in list)
{
_thumbs[_thumbs.length] = addChild(parseItem(item));
}
}
private function parseItem(item:XML):DisplayObject
{
var target:String = item.@target;
var url:String = item.@url;
// var loader:Loader = new Loader();
// loader.addEventListener(MouseEvent.CLICK, loader_clickHandler);
// loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler);
// loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loader_eventHandler);
// loader.load(new URLRequest(url));
/*
* Replace with real loader.
*/
var loader:Sprite = new Sprite();
loader.addEventListener(MouseEvent.CLICK, loader_clickHandler);
draw(loader.graphics);
_dict[loader] = target;
return loader;
}
private function draw(graphics:Graphics):void
{
graphics.clear();
graphics.beginFill(0);
graphics.drawRect(0, 0, 10, 10);
graphics.endFill();
}
private function loader_completeHandler(event:Event):void
{
}
private function loader_eventHandler(event:IOError):void
{
}
private function loader_clickHandler(event:MouseEvent):void
{
trace(_dict[event.currentTarget]);
}
}
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Das Dictionary war genau das was ich brauchte. Endlich klappt das kleine Skript das mich Stunden lang geärgert hat. Werd es mir gleich mal in mein Wiki schreiben damit ich es nicht wieder vergesse ![]() @ Omega Psi: Danke nochmal für deinen Code! Mein Programmierstiel ist wahrscheinlich nicht so optimal aber ich lerne ja immernoch dazu ![]() Und hier mal das gute Stück (Bild-Arrays müssen selbst gefüllt werden) PHP-Code:
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Funktionsnamen in Array speichern | chrissy810 | ActionScript 3 | 2 | 11-09-2009 12:08 |
| [Flash CS4] problem mit Funktionsnamen | Prinz_Martin | Flash Einsteiger | 8 | 06-01-2009 16:58 |
| Variablen Funktionsnamen aufrufen | Hasch2o | ActionScript 1 | 2 | 23-04-2007 15:20 |
| Funktionsnamen aus Variabler zusammensetzen... | Morty | ActionScript 1 | 7 | 09-12-2003 22:34 |
| kann man funktionsnamen konkatinieren? | mole | PHP und MySQL | 4 | 06-06-2003 16:57 |