Effizienter Zugriff auf Singletons

Häufig sieht der Zugriff auf Singletons so aus:

Effizienter finde ich aber

Siehe Bild. getInstance() ist dabei “internal static”

PS: “internal” ist vielleicht nicht nötig, aber “protected” ging irgendwann mal nicht, deswegen… sicher ist sicher^^

AS3/E4X: Rekursiv alle Unterknoten mit einem Attribut finden

Nerd-Porn:

Liefert das Attribut “myAttribute” des Unterknotens (nicht begrenzt auf direkte Kind-Knoten), dessen Attribut myID gleich “abc” ist. Man beachte: Den doppelten Punkt hinter “xml”, sowie den Sternchen-Selektor. Quelle, man beachte dort auch die unten verlinkten weiterführenden Artikel.

UPDATE: Eine Struktur wie die Folgende

kann man so durchsuchen:

text:

slide.text:

Flashplayer 11, Molehill, Flare3D 2.0 in FDT 4.2

Tag,

wer die Flare3D 2.0-Beispiele* in FDT 4.2 ausprobieren möchte, dem sei der folgende Artikel an’s Herz gelegt: How to get started with the Molehill API and Away3D. OK, ist nicht für Flare3D, aber trotzdem hilfreich. Besonders wichtig:

  • Als Compiler-Argument “-swf-version=13” hinzufügen, sonst gibt’s Runtime-Fehler
  • Das dort verlinkte SDK hat keine flex.swc in frameworks/libs, was mein FDT gar nicht mochte. Aber es funktioniert mit der swc aus dem 4.1er SDK^^ Einfach rüberkopieren
  • Die flashplayer_inc_playerglobal_022711.swc kann zwar auch in einem externen Verzeichnis eingebunden sein, für FDT muss diese nicht, wie beschrieben, die originale playerglobal ersetzen. Dann kompiliert er aber leider nicht 🙂 Fehlermeldung:

Inkonsistente Verknüpfung in /xy/abc/flashplayer_inc_playerglobal_022711.swc(flash.net.drm:AddToDeviceGroupSetting, flash.net.drm:AuthenticationMethod, flash.net.drm:LoadVoucherSetting). ‘flash.net.drm:LoadVoucherSetting’ ist als extern markiert, ‘flash.net.drm:AddToDeviceGroupSetting’ aber nicht.

bzw auf Englisch:

Inconsistant linkage in /xy/abc/flashplayer_inc_playerglobal_022711.swc(flas h.net.drm:AddToDeviceGroupSetting, flash.net.drm:AuthenticationMethod, flash.net.drm:LoadVoucherSetting) – ‘flash.net.drm:LoadVoucherSetting’ is marked as extern, but ‘flash.net.drm:AddToDeviceGroupSetting’ is not.

Also doch die vorhandene playerglobal in framework/libs/player/10.2/ ersetzen. Man liest vereinzelt auch davon, dass man einen neuen Ordner “11” in frameworks/libs/player anlegen kann, das habe ich aber nicht probiert.

HTH,

Lennart

*Warum kein Away3D? Ich habe keines der beiden Frameworks bisher ausprobiert, aber hier klang Flare3D irgendwie cooler 😉

Flash auf iOS, 2

7 Tage, 7 Posts, 6: Eine Kurzanleitung zum Open Screen Project Manager. Ich setze den vorherigen Post zum Thema voraus. Desweiteren wird benötigt:

Dann kann’s losgehen. Der Open Screen Manager ist eine AIR-Anwendung, die ein Projekt-Template für FDT installiert. Ein solches Projekt erzeugt ein Standard-Projekt, ergänzt um die folgenden Ordner:

  • bin: Das Export-Verzeichnis für alle Open Screen Formate
  • bin/ios: Das Export-Verzeichnis für iOS-Apps
  • bin/resources: Hier können externe Inhalte (Bilder, XMLs, …) abgelegt werden, die die Anwendung nachladen kann. ACHTUNG: SWFs dürfen keine Logik enthalten 🙁
  • build: Einstellungen und Ant-Skripte
  • build/core: Enthält zentrale Skripte plus einiger Pfadangaben. Kann im Einzelfall geändert werden, muss aber normalerweise nicht.
  • build/device: Enthält Settings für jedes unterstütze Gerät. Muss normalerweise nicht geändert werden
  • build/*.properties: Wichtige Settings, die manuell geändert werden können, aber normalerweise durch einen Dialog geändert werden:
  • build/project.osp: Per Doppelklick zu öffnender Dialog zum Setzen der wichtigsten Einstellungen

Diese Einstellungen sind die folgenden:

  • Project-Settings, Name: Dieser Name wird später auch am Icon der Anwendung auf dem iPad-Desktop stehen.
  • Project-Settings, Identifier for Distribution: Zum Beispiel com.example.myApp
  • Project-Settings, File name: Das SWF
  • Project-Settings, SWF Content: Der Name des SWF ohne Suffix (?)
  • Project-Settings, Main class: Die zu startende Klasse in dem SWF
  • Device-Settings: Hier ist die iOS-Plattform auszuwählen, also iPad, iPhone, …
  • Plattform-Settings, iOS certificate file: Das Zertifikat des Entwicklers – wichtig: als .p12-Datei
  • Plattform-Settings, iOS certificate password: Das Passwort, mit dem die .p12-Datei verschlüsselt wurde
  • Plattform-Settings, iOS Provision file: Das Provisioning-File
  • Plattform-Settings, iOS Adobe Packager (pfi): etwa ../../packagerforiphone/bin/pfi, aus dem erwähnten Paket

Kompiliert wird über Ant (/build/build.xml). Achtung: Das Skript wird basierend auf dem oben ausgewählten Device erstellt. Wenn dort nichts eingetragen ist, ist das Skript leer. Falls der Task fehlerfrei durchläuft, sollte unter bin/ios/ipad/ eine .ipa-Datei mit dem unter Project-Settings/SWF Content eingetragenen Namen erscheinen. Diese kann man dann via iTunes installieren 🙂

Flash auf iOS, 1

7 Tage, 7 Posts, 5: Eine Kurzanleitung zum Open Screen Project Manager. Hier der vorbereitende Teil:

  1. Man besorge sich einen iOS-Developer Account.
  2. Man logge sich ein.
  3. Man gehe zum iOS Provisioning Portal (rechts in der Navi)
  4. Man gehe zu “Devices”, und richte (zum Beispiel) sein iPad ein. PS: Die UDID (“Device ID”) findet man, wenn man in iTunes auf der Übersicht der Geräteeigenschaften auf die Seriennummer klickt. Diese wird dann zur UDID^^
  5. Man gehe zu “App IDs” und trage die folgenden Informationen ein: Description (Fließtext), “Bundle Seed ID” (die App-ID, unter der man mehrere Apps bündeln möchte – optional), “Bundle Identifier” (zum Beispiel com.example.myApp)
  6. Man gehe zu “Certificates” und lege einen neuen “Team Member Account” an (man beachte dabei das “Howto”, ganz rechts). Das ist wichtig, der aktuelle Account dient nur zu administrativen Zwecken. Auch wichtig: Erst nach der Verifizierung per Email erscheint der neue Account unter “Team Member Certificates”
  7. Man gehe zu Provisioning und verknüpfe App-ID(s), Entwickler und Device(s)
  8. Man lade sich das resultierende Provisioning-Profile runter

iPad: Fehlermeldung bei Installation einer App/2.

Ich habe Feuer gemacht!

Ich habe Feuer gemacht:

Will man per Open Screen Project Manager eine AS3-Anwendung kompilieren, so ist das relativ einfach. Tricky wird es,wenn man diese Anwendung auf dem iPad installieren will… Mit iTunes hatte ich die folgenden Fehlermeldungen:

  1. Die App “xy” wurde nicht auf dem iPad “abc” installiert, da der Signaturaussteller nicht gültig ist:
    Das falsche Zertifikat wird verwendet. Statt des “Your Certificate” musste ich ein “Team Member Certificate” benutzen.
  2. Die App “xy” wurde nicht auf dem iPad “abc” installiert, da die Berechtigungen nicht gültig sind:
    Der “Identifier for distribution” ist im Open Screen Manager, Reiter “Project”, falsch eingetragen. Dort darf NICHT die komplette App ID stehen, sondern nur der “Bundle Identifier”, also ohne “Bundle Seed ID” stehen. In anderen Worten: Dort darf nur “com.yourDomain.yourApp” stehen, NICHT “ABC1234XYZ.com.yourDomain.yourApp”
  3. “The app “xy” was not installed on the iPad “abc” because the entitlements are not valid:
    Der gleiche Fehler wie 2., vergleiche hier.

Man kann übrigens auch Xcode nutzen, um die App zu installieren. Die Fehlermeldung aus 2. lautet dann: “The executable was signed with invalid entitlements. The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile. (0xE8008016).”

“Open Screen Project”-Manager für FDT 4.1

https://www.youtube.com/watch?v=8n6jDLz4Im8

Das Open Screen Project hat sich viel vorgenommen:

Enable consumers to engage with rich Internet experiences seamlessly across any device, anywhere.

Dies für FDT 4 umzusetzen ist das Ziel des “OpenScreen Project Managers”: Ein Project-Template, das im Grunde nur eine Sammlung von Ant-Skripten plus einer Oberfläche zum Administrieren dieser Skripte mitbringt. Man kommt trotzdem nicht drumrum, zum Beispiel für iOS-Veröffentlichungen den ganzen Overhead (Login benötigt!) zu erledigen, aber trotzdem: Hat man das ganze erst mal durchschaut, ist es komfortabler als die Konsole 😉

PS: Danke an Björn!

VerifyError: Error #1107: Die ABC-Daten sind beschädigt

VerifyError: Error #1107: Die ABC-Daten sind beschädigt, versuchtes Lesen außerhalb des gültigen Bereichs.

im Zusammenhang mit TweenMax? Bzw, besser gesagt: Im Zusammenhang mit TweenLite aus dem TweenMax-ZIP? Hatte ich auch. Habe auf TweenMax v11.411 aktualisiert, und nehme statt TweenLite nun TweenNano. Die Calls zu TweenMax waren bei mir nicht betroffen; TweenLite allerdings auch in der Version 11.

Der Fehler trat bei mir nur unter Windows auf, nicht unter OS X, also Obacht!