Library-SWCs mit FDT erstellen

Es ist recht einfach, ein komplettes Projekt als SWC zu kompilieren: Rechtsklick auf’s Projekt -> Run as -> FDT SWC Library (Quelle). Ein Ant-Skript wäre schöner, aber grundsätzlich ist es so erst mal einfach. Was die Sache nämlich an anderer Stelle verkompliziert, ist der allseits beliebte Fehler 1047:

Parameter initializer unknown or is not a compile-time constant.

bzw.

Parameterinitialisierer unbekannt oder keine Kompilierungszeit-Konstante.

Dieser tritt dann auf, wenn man eine Konstante als default-Übergabe-Parameter nutzt, und die Klasse mit der Konstante erst nach dieser Klasse kompiliert wird. Oder so. Es gibt haufenweise Einträge dazu im Bug-Tracker, teilweise schon jahrealt, leider ohne Ergebnis. Die längste Antwort von Adobe (die nicht “OK, wird noch mal geprüft” lautet) ist “Wäre schwierig zu implementieren, machen wir nicht.”^^

Deshalb folgende Lösungsansätze:

  • Ein Workaround im Netz ist es, einfach keine Konstanten zu nutzen – das ist natürlich Quatsch.
  • Ein anderer ist es, die entsprechende Funktion zu ändern – statt “foo:Number=MyConstants.FOO” “foo:Number=NaN”. Man prüft dann in der Funktion auf NaN, und setzt ggf. dort erst die Konstante. Das funktioniert, aber das will man eigentlich nicht für externe Libraries (ich meine damit projektexterne Libraries, nicht das Projekt an sich, was hier ja auch eine Library werden soll^^) .
  • Dann: Unter Project Properties -> FDT Build Path -> Build Order die Reihenfolge der SWCs und Sourcefolder so zu ändern, dass die Klasse eben zuerst kompiliert wird. Geht auch nur, wenn Konstanten-Klasse und aufrufende Klasse in verschiedenen Packages liegen einen separaten Eintrag im Build-Path haben
  • Deshalb habe ich gerade ein neues Package einen neuen Ordner angelegt, zum Build-Path hinzugefügt, dort unter den korrekten Pfad die aufrufende Klasse verschoben, und dieses neue Package diesen neuen Ordner (heißt bei mir “compilerbug”) mit der oben beschriebenen Methode als erstes kompiliert 🙁 auch unschön, aber so muss ich wenigstens keine Klasse anderer Leute anfassen

Das nervt mich gerade extrem, hat jemand eine bessere Lösung?

One thought on “Library-SWCs mit FDT erstellen

  1. Pingback: Default parameter aus anderer Klasse - Flashforum

Leave a Reply

Your email address will not be published. Required fields are marked *

Ich erkläre mich damit einverstanden, dass alle eingegebenen Daten und meine IP-Adresse zum Zweck der Spamvermeidung durch das Programm Akismet in den USA überprüft und gespeichert werden. Weitere Informationen zu Akismet und Widerrufsmöglichkeiten.