
Schneewittchen
Irgendwie ist mir, als hätte ich das hier schon mal gehabt - egal: Ist immer noch gut.
AS3: CamelCase an beliebigen Trennzeichen
Tag,
wer ein einzelnes Wort camelCasen möchte, kann dies zum Beispiel so tun:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static function capitalize( input : String, ignoreAllButFirstLetter : Boolean = false ) : String { if( input ) { if( ignoreAllButFirstLetter ) { return input.substr( 0, 1 ).toUpperCase() + input.substr( 1, input.length ); } else { return input.substr( 0, 1 ).toUpperCase() + input.substr( 1, input.length ).toLowerCase(); } } return ''; } |
Der zweite Parameter ist hilfreich, wenn man einen String an beliebigen Trennzeichen camelCasen möchte - etwa einen Namen an Leerzeichen und Bindestrichen:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
public static function capitalizeWords( str : String, delimiter : Array ) : String { var capitalized : String = str; if( capitalized && capitalized.length > 0 ) { capitalized = capitalized.toLowerCase(); var d : *; var word : String; var words : Array; var tmp : String; for each( d in delimiter ) { tmp = ''; words = capitalized.split( d ); for each( word in words ) { tmp = tmp + capitalize( word, true ) + d; } // remove trailing delimiter: capitalized = tmp.substr( 0, tmp.length - 1 ); } } return capitalized; } |
Aufruf dann z.B. so:
|
1 |
name = capitalizeWords( name, [ ' ', '-' ] ); |
HTH
AS: Coden mit TextMate, kompilieren mit der IDE (Minimallösung)
OS X: Seitenleiste zurücksetzen

Manchmal passiert es, dass man manuelle Einträge in der OS X-Seitenleiste (rot markiert) nicht mehr löschen kann. Dann muss man ~/Library/Preferences/com.apple.sidebarlists.plist löschen und den Rechner neu starten (den Finder neu zu starten hat bei mir nicht gereicht)
Achtung: Dabei gehen auch alle Einstellungen der Seitenleiste verloren!
Actionscript: Automatisch erzeugte Versionsnummer im Kontextmenü

Für ein Projekt wollte ich irgendeine Möglichkeit haben, einer SWF ihre genaue Versionsnummer "anzusehen". Dies sollte unbedingt automatisiert geschehen. Ich glaube mich dunkel zu erinnern, dass man mit Ant auch direkt in die AS-Klassen schreiben kann, finde das aber gerade nicht wieder... was ich aber gefunden habe basiert ebenfalls auf Ant, genauer gesagt: Auf dem "BuildNumber"-Task.
Damit liest man eine Nummer aus einer Datei (default: build.number), erhöht sie um 1, und schreibt das Ergebnis zurück. Soweit, so gut. Aber wie bekommt man das in die SWF? Mit einer Klasse, die in etwa so aussieht (ich habe es auch mit einer internal class probiert, aber nicht hinbekommen - Tipps sind willkommen!):
|
1 2 3 4 5 6 |
package test { import flash.utils.ByteArray; [Embed(source="../script/build.number", mimeType="application/octet-stream")] public class BuildNumber extends ByteArray{} } |
Diese Klasse kann man nun instantiieren und auslesen:
|
1 2 |
var obj:BuildNumber = new BuildNumber(); trace( obj.toString() ); |
Eleganter: Man schreibt den Inhalt in's Kontextmenü:
|
1 2 3 4 5 |
var buildNr : ContextMenuItem = new ContextMenuItem( 'Build: ' + obj.toString() ); buildNr.enabled = false; var myMenu : ContextMenu = new ContextMenu(); myMenu.customItems.push( buildNr ); contextMenu = myMenu; |
HTH
Da sieht man mal, wie klein das Ding ist
so alles in allem:
Alternativen für Facebook-Posts aus Actionscript
Wer mit der Facebook-API für Actionscript Posts absetzen will, kann das direkt machen:
|
1 |
Facebook.api( '/me/feed', _publishPostHandler, params, URLRequestMethod.POST ); |
oder als Javascript-Overlay:
|
1 |
Facebook.ui( 'feed', data, null, null ); |
oder als Pop-Up
|
1 |
Facebook.ui( 'feed', data, null, 'popup' ); |
Das data-Object beinhaltet die in den Docs unter "Publishing" beschriebenen Parameter.
Actionscript: Einen Dialog zur Webcam-Auswahl anzeigen

Die "Auswahl" der angeschlossenen Webcam, bzw. die Erkennung, ob eine Webcam angeschlossen ist, is' immer so 'ne Sache. Es gibt wilde Skripte mit Schleifen über Camera.names, mit Unterscheidung des Betriebssystems, mit Prüfung auf "USB Video Class Video". Sieht alles irgendwie nicht generisch aus.
Was ich gerade gefunden habe, klingt dagegen ganz gut:
To display the Flash Player Camera Settings panel, which lets the user choose the camera to be referenced by
getCamera(), useSecurity.showSettings(SecurityPanel.CAMERA)
Das Ganze sieht dann aus wie oben.
Facebook Profilbild mit LoaderMax laden
Facebook-Profilbilder kommen von gefühlt 20.000 unterschiedlichen Server; vermutlich eine Load-Balancing-Sache. Und die crossdomain dieser Server ist nicht ganz so offen, wie man das auf den ersten Blick gerne hätte. Nun kann man natürlich aus der URL des Bildes (die sich ja abfragen lässt) den Server extrahieren, und die crossdomain dieses Servers laden... genau das bietet LoaderMax aber schon von haus aus:
|
1 |
_loader = new ImageLoader( url, { context:new LoaderContext(true, ApplicationDomain.currentDomain) } ); |
das "true" des LoaderContextes bedeutet, dass die entsprechende crossdomain geladen wird.