| |||||||
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: Feb 2007
Beiträge: 174
|
Hi, wollte das nur mal festhalten (auch für mich): Wenn man FlashDevelop benutzt und aus einer .swc dynamisch Instanzen generieren will, muss beim Hinzufügen (in Flash Develop Rechtsklick auf swc -> Add To Library, danach nochmal Rechtsklick darauf und unter Options "Included Library (include completly)" ausgewählt sein. Ansonsten gibts folgenden Fehler: "[Fault] exception, information=ReferenceError: Error #1065: Variable XYZ is not defined." Hintergrund: Standardmäßig wird nur das eingebunden, was auch wirklich referenziert wurde (Library (include referenced classes)) Also falls ihr sowas verwendet und mit FD arbeitet, sicherstellen, dass die komplette SWC importiert wurde. PHP-Code: Geändert von flash_newbie (20-01-2012 um 13:14 Uhr) |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Wenn du einen Typ aus einer SWC referenzierst, musst du ihn auch in die SWF kompilieren. Für gewöhnlich geschieht das automatisch, da die import Direktive den Katalog von Klassen erzeugt, die in die SWF sollen. Da du über getDefinitionByName keine Klasse direkt verwendest, werden diese auch nicht gelinkt. Über Compiler Argument kann man das aber steuern. Da musst du aber mal die Referenz konsultieren, das hab ich gerade nicht im Kopf.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #3 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Wieso verwendest Du nicht einfach sauber referenzierte Klassennamen? Dynamische Konstruktionen wie getDefinitionByName sind doch nur potentielle FehlerQuellen?! Und da man die Klassennamen in der IDE eh alle händisch vergeben muss, sehe ich nicht wo da der Vorteil liegt?!
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Feb 2007
Beiträge: 174
|
@Martin es handelt sich um ein Basisklasse mit Animationen die mit zusätzlichen Grafikattributen ausgestattet werden soll. Dies soll möglichst universell und dynamisch sein (es gibt ca. 40 Möglichkeiten, wie sie kombiniert wird). Ich glaube, dass ich so mit der dyn. Typisierung das für mich am einfachsten lösen kann. Aber vielleicht ist das auch Unsinn. Bin mal gespannt ob das so funtkionietrt wie ich es mir vorstell. Geändert von flash_newbie (20-01-2012 um 13:57 Uhr) |
| | |
| | #5 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Naja, die Fehler kann man ja schon arg einschränken und auch über Caching die Zugriffszeiten optimieren (ich hab da aber auch keine Benchmarks zu): Code: const _cache:Object = {};
function getNewInstanceFrom(qualifiedClassName:String):Object
{
var ClassDef:Class
if (_cache[qualifiedClassName])
{
ClassDef = _cache[qualifiedClassName] as Class
return new ClassDef();
}
ClassDef = getDefinitionByName(qualifiedClassName) as Class;
if (!ClassDef)
{
throw new ArgumentError('Could not find Class for name '+ qualifiedClassName);
}
return new (_cache[qualifiedClassName] = ClassDef)();
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #6 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| @Omega Psi: Was einen aber immer noch nicht des Problems entledigt, die so generierten Instanzen dann auf irgendwas casten zu müssen um damit arbeiten zu können. Auf Object oder * zu typisieren ist mir persönlich ein Graus und zudem ein Einfallstor für Laufzeitfehler ![]() Ich bleibe daher dabei: Man sollte, wo immer möglich, auf solche dynamischen Konstruktionen verzichten und stattdessen die Klassen sauber statisch referenzieren. @flash_newbie: Zitat:
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (22-01-2012 um 11:26 Uhr) | |
| | |
| | #7 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Es geht doch nur um die Generierung von Instanzen. Und das "fehlerfreies" Laufzeitverhalten wird ja nicht durch Compile-Sicherheit gewährleistet, sondern durch Tests und Restriktion der Ein- und Ausgabeparameter für Methoden. Code: function getNewSpriteFrom(qualifiedClassName:String):Sprite
{
const object:Object = getNewInstanceFrom(qualifiedClassName),
sprite:Sprite = object as Sprite;
if (!sprite)
{
throw new ArgumentError('Instance created from ' + qualifiedClassName + ' is no covariant instance of Sprite');
}
return sprite;
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript Geändert von Omega Psi (22-01-2012 um 17:11 Uhr) |
| | |
| | #8 (permalink) | ||
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| Zitat:
(~40 Klassen, die von 1. Basisklasse erben, und nur unterschiedliche Variationen derselben paar Ergänzungen darstellen) Daher plädiere ich auch für mehr Infos bezüglich der konkreten Anforderung/Implementierung. ![]() Zitat:
Dennoch tendier ich auch eher dazu solche dynamischen Konstrukte zu vermeiden. Ich schreib lieber ein statisches Array (eine Whitelist), mit den Klassen die verwendet werden können, als die Klassennamen zusammenzubauen. Auf diese Weise kann es einfach nicht vorkommen, dass ein Klassenname falsch ist/die dazugehörige Klasse nicht existiert. Ich bin mir sicher, dass auch dass irgendwo an seine Grenzen stoßen wird, aber da war ich bisher nicht. Und wenn ich mal da lande, weiss ich ja, wo ich nachlesen kann | ||
| | |
| | #9 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Aber das ist das gleiche in rot. Ob man nun eine Whitelist verwendet oder sich die Klassennamen an anderer Stelle zusammenbaut. Die Fehlerquellen sind die gleichen und kann man einfach über Unittests abfangen.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Oder nicht?
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #11 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
|
Die Fehlerquellen kann ich grad nicht abschätzen, die Fehler an sich sind ähnlich. In jedem Fall sind es Laufzeitfehler, die wir beide hier abfangen müssen. Aber das gleitet in eine Diskussion über persönliche Präferenzen und Programmierstil ab. Ich wollt nur meinen Senf dazu geben, wie ich an die Sache rangehen würde. Ob nun das eine, oder das andere. Ich finde hier beides fehl am platz, und wie oben schon geschrieben, hört es sich für mich so an, dass man hier besser das Objekt anhand der Anforderungen zusammenbaut, als dass man hier eine von x "gleichen" Klassennamen zusammenbaut, Klasse raussucht und instanziert. Gut soweit? ich finde jetzt ist wieder flash_newbie gefragt; uns noch paar Infos zu dem Konstrukt zu geben, dass er da baut/bauen will. Dafür revanchieren wir und mit Lösungsvorschlägen |
| | |
| | #12 (permalink) | |
| Odin zum Gruße! Registriert seit: Nov 2006 Ort: Ösiland
Beiträge: 327
| Zitat:
LG
__________________ keine PM´s bezüglich Flash-Fragen - dafür haben wir das Forum. Thx. | |
| | |
| | #13 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #14 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
Aber, wie Thomas schon sagte: Es ist jetzt an flash_newbie uns einen tieferen Einblick in das Vorhaben zu gewähren, bei dem wir ihm helfen sollen.
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (23-01-2012 um 09:31 Uhr) | |
| | |
| | #15 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Man kann die Factory doch entsprechend implementieren.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| dynamisch typisieren, flashdevelop, swc |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| FlashDevelop 3.0.0 RTM veröffentlicht | marc | Nachrichten | 0 | 15-06-2009 11:39 |
| FlashDevelop + SWC | silentx | Zusatzprodukte | 2 | 29-07-2008 09:56 |
| FlashDevelop 3.0.0 (Beta5) | Madokan | Nachrichten | 0 | 03-12-2007 10:13 |
| FlashDevelop 3.0.0 (Beta 4) | Madokan | Nachrichten | 0 | 11-11-2007 08:18 |
| Flashdevelop 3 | screamingworld | ActionScript 3 | 20 | 16-06-2007 22:56 |