Archive for Computer

OSMF Plugin: “Unexpected null parameter”

Wer beim Spielen mit den OSMF-Beispielen die Fehlermeldung “Unexpected null parameter passed to method” bekommt, der möge in der configuration.xml die baseURL des Knoten “assets” prüfen :-)

Flash: Cookies auslesen

Geht vielleicht so oder so.

Conditional Compilation in Flex Ant

<define name=”CONFIG::FLASH_10_1″ value=”false”/>
<define name=”CONFIG::LOGGING” value=”false”/>

Quelle: http://blogs.adobe.com/flexdoc/conditionalcompilation.pdf

Unexpected multiname type: 16

FDT 4 plus Flex 4 melden mir gerade

[mxmlc] Unexpected multiname type: 16
[mxmlc] Unexpected multiname type: 16
[mxmlc] /Users/Shared/workspace/foo/bar/lib/util/VectorUtils.as
[mxmlc] Fehler: Typ wurde nicht gefunden oder war keine Kompilierungszeit-Konstante: .

Keine Ahnung was das ist – aber beheben kann ich es durch Löschen aller .swf.cache-Dateien und Zurücksetzen des Compilers.

Witzigerweise gibt es einen Eintrag in den Adobe-Foren dazu, in dem auch Vector involviert ist… der scheint mir noch nicht ganz ausgereift zu sein. So kann ich zum Beispiel als Übergabeparameter einer Funktion nicht Vector.<*> angeben (auch nicht Vector.<Object>), sondern nur *, aber das führt hier vllt zu weit.

switch true

Grundsätzlich bin ich großer Fan von switch-Anweisungen… aber das sieht merkwürdig aus :-) wobei, je länger ich es mir ansehe…

Quelle: http://my.adobe.acrobat.com/p56475882/, eine großartige Video-Präse (zumindest die erste Hälfte) über OSMF.

Frage zu Command Pattern und “Zwillingsklassen” [BEANTWORTET]

Was ich mir eigentlich wünsche, ist Mehrfachvererbung: Ich habe verschiedene Klassen A, B, C, und die sollen die Funktionen x(), y(), z() in unterschiedlichen Kombinationen anbieten. Klasse A kann x() und y(), brauch aber z() nicht zu können; Klasse B kann alle drei, und Klasse C nur x().

Mehrfachvererbung mag theoretisch zu Problemen führen, praktisch ist es aber (auch deshalb) so, dass z.B. AS3 sie nicht unterstützt. Deswegen spare ich mir diesen Absatz mal ;-)

Auf Wikipedia finde ich als Alternative das Konzept der Zwillingsklasse, das mir neu war. Mir stellt sich dabei aber dieselbe Frage wie beim Command Pattern:

  • Bei der Zwillingsklasse wäre z.B. Klasse A ein Wrapper für zwei (oder mehr) Instanzen komplexer Klassen der Typen, die auf Grund fehlender Mehrfachvererbung nicht gleichzeitig beerbt werden können. Diese Instanzen bieten hier im Beispiel jeweils die Funktionen x() und y().
  • Das Command Pattern lagert die eigentliche Funktionalität von x(), y() und z() in so genannte Commands aus. In so einem Command ist auch jeweils nix anderes drin als diese eine Funktionalität (und ggf. alles, was dazu gehört); im Beispiel hätte A also je ein Command für x() und eines für y()

Das Command Pattern klingt für meine Begriffe erst mal besser, da sich das im Wiki-Artikel zu Zwillingsklassen beschriebene Problem der Redundanz nicht stellt. Aber, und das ist meine Frage zu beiden Ansätzen: Oft möchte ich in den Funktionen auf (private) Attribute der jeweiligen Klasse zugreifen. Wie soll das in den Ansätzen (schön) funktionieren?

Mein Ansatz wäre: Dem Command eine Referenz auf sich selbst mitgeben, und gleichzeitig ein Interface implementieren, um die Abhängigkeit von Command zum Parent nicht zu groß werden zu lassen. Aber schön ist was anderes… private Attribute freigeben, nur damit eigentlich in der Klasse zu verortende Funktionalität darauf zugreifen kann?? Gibt es einen anderen Ansatz? Falls nicht: Wie strukturiert man sowas? Je ein Package mit Command und “zugehörigem” Interface für zukünftige Parents??

Bis dahin schreibe ich die Funktionen halt doppelt.

ANTWORT (vorerst?): Robotlegs, bzw. Dependency Injection. Dort (und vermutlich auch überall sonst, wenn man etwas mehr Ahnung von Entwurfsmustern hat als ich) kann ich jede Art von Daten in ein Command “injizieren”, also insbesondere die von mir gewünschten privaten Daten (Models, …). Bzw. andersherum: Ich deklariere im Command meine “Dependencies”, meine Abhängigkeiten. Wie sagte Christian so schön: “Woher die Daten kommen, ist der Klasse [dem Command] egal.” Mit einem Framework wie Robotlegs ist es aber tatsächlich auch dem Entwickler egal; man deklariert dann nämlich nur noch, welche (ggf. singuläre) Instanz man in das Command injizieren möchte, das macht insgesamt zweieinhalb Zeilen Code. Ohne sich drum kümmern zu müssen, wie die Daten nun von A nach B kommen, kann ich im Command auf die gewünschten Daten zugreifen. Thumbs up.

HTML Sonderzeichen

Was ich bis eben nicht wusste: Es gibt ein “schmales geschütztes Leerzeichen”, das “zwischen Zahlenwert und Maßeinheit” kommt – also etwa bei “100 %”. Der HTML-Code lautet &#x202f;

In diesem Zusammenhang: Die tiefgestellte “2″, z.B. in “CO₂”, lautet &#8322;

Content einfügen mit CSS

Weil ich’s grad gesucht (und nicht gleich wiedergefunden) habe: Man kann mit CSS Content einfügen. Zum Beispiel diese kleinen Doppelpfeile (») im WordPress-Standardtheme werden dort wie folgt eingefügt:

.entry ul li:before, #sidebar ul ul li:before {
	content: "bla";
	}

UPDATE: Upsala, Copy&Paste-Formatierungs-Fehler

Flex4: Font Einbettung

In Flex 4 muss das Flag embedAsCFF gesetzt sein:

[Embed(source='assets/fonts/ARIAL.TTF', embedAsCFF='false', fontName='tabfont')]

Falls jemand weiß, wieso/weshalb/warum, dann gerne in die Comments posten :-)

Quelle: Hier und Franzi.

TweenMax: Hexadezimale Werte tweenen

Wer Hex-Werte tweenen möchte (zum Beispiel die Farbe eines Textes), dem fällt vermutlich auf, dass das Textfeld alle Farben des Regenbogens durchläuft – was irgendwie naja aussieht. Dafür gibt es aber (und mir war das neu) das HexColorsPlugin :-)

« Older Entries