Posts Tagged ‘Actionscript’

Flash: Cookies auslesen

Geht vielleicht so oder so.

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.

Flash Player (10.1): Verbindung mit dem Debugger herstellen

Neulich im Flash Builder: “Es wird auf die Verbindung von Adobe Flash Player mit dem Debugger gewartet”. Die kommt aber nie zustande. Ich hatte das Problem bisher immer, also auch mit dem Flash Player 9 in FDT, …, aber in diesem Fall war es der Flash Player 10.1 (Debug), OS X, Firefox, Flash Builder. Die Lösung:

  1. Run your application in debug mode
  2. Right click over the Flash movie
  3. Change the option from Localhost to “Other Machine”
  4. Type the IP address 127.0.0.1
  5. Click Connect

Danke auch an Christian :-)

Flash: Warnung “-runtime-shared-libraries”

Mit Flex 4 kommt eine merkwürdige Warnung:

Warnung: Bei dieser Kompilierungseinheit war in den Frame-Metadaten keine factoryClass zum Laden der konfigurierten, zur Laufzeit gemeinsam genutzten Bibliotheken angegeben. Um ohne zur Laufzeit gemeinsam genutzte Bibliotheken zu kompilieren, legen Sie entweder die Option “-static-link-runtime-shared-libraries” als “true” fest oder entfernen die Option “-runtime-shared-libraries”.

Wem das nichts sagt, und wem Google nicht hilft (weil dort nämlich nur die englische Version zu finden ist): Hier die Lösung.

  1. flex-config.xml finden
  2. Zeile “static-link-runtime-shared-libraries>false</static-link-runtime-shared-libraries>” finden
  3. “false” in “true” ändern

Quelle.

Flash: Scale9Grid für Bitmaps

MovieClip.scale9Grid funktioniert nicht auf Bitmaps – auch nicht auf Bitmaps in MovieClips.

Zum Glück gibt es Abhilfe von ByteArray.org. Anwendungsbeispiel:

var bg:SomeSwcClip = new SomeSwcClip();
var bgBitmapData:BitmapData = new BitmapData( bg.width, bg.height, true, 0×000000 );
bgBitmapData.draw( bg );
_bg = new ScaleBitmap( bgBitmapData, PixelSnapping.ALWAYS, true );
_bg.scale9Grid = bg.scale9Grid;
addChild( _bg );

Witziges Detail am Rande: Auch, wenn das scale9Grid des MovieClips aus der SWC keinen Effekt hat, so ist es doch da, und kann ausgelesen werden^^ Mit dem obigen Code kann man also in der IDE das scale9Grid setzen, um es im Code dann als Basis für ScaleBitmap zu nutzen…

HTH

Flash: Laufweite von Umlauten

Flash und Schriftarten… muss ich mehr sagen?

Wenn Fonts in Photoshop vernünftig laufen, in Flash aber Probleme machen (siehe oben), hilft vielleicht dieser “Hack”:

str = str.toUpperCase();
str = str.split(‘Ü’).join(‘<FONT LETTERSPACING=”8″>Ü</FONT>’);
str = str.split(‘Ö’).join(‘<FONT LETTERSPACING=”-9″>Ö</FONT>’);
str = str.split(‘Ä’).join(‘<FONT LETTERSPACING=”5″>Ä</FONT>’);
_tf.htmlText = str;

Danke an Mario.

Facebook Actionscript API und Extended Permissions

Die Facebook Actionscript API ist schön und gut (sic!), aber sehr schlecht dokumentiert. Ein Beispiel? Die Klassen com.facebook.commands.stream.* existieren, stehen aber nicht in der Doku^^

Von daher hat es etwas gedauert, um das folgende Problem zu identifizieren: Wenn man sich per Connect bei Facebook einloggt, können Extended Permissions direkt beim Login abgefragt werden (Parameter req_perms). Die AS API bietet dies aber nicht an; in der Klasse com.facebook.session.DesktopSession (Funktion onLogin()) werden sie zwar verwendet, aber man kann keine eigene Auswahl festlegen. Also: Sourcen runterladen, ändern:

protected function onLogin(p_event:FacebookEvent):void {
p_event.target.removeEventListener(FacebookEvent.COMPLETE, onLogin);

if (p_event.success) {
_auth_token = (p_event.data as StringResultData).value;

//now that we have an auth_token we need the user to login with it
var request:URLRequest = new URLRequest( login_url );
var variables:URLVariables = new URLVariables();

variables.req_perms = ExtendedPermissionValues.PUBLISH_STREAM;
variables.api_key = api_key;
variables.v = api_version;
variables.auth_token = _auth_token;

request.data = variables;
navigateToURL(request, “_blank”);

_waiting_for_login = true;
dispatchEvent(new FacebookEvent(FacebookEvent.WAITING_FOR_LOGIN));
} else {
onConnectionError(p_event.error);
}
}

Der wichtige Punkt hier ist es, URLVariables zu verwenden!

Quelle, ich musste aber zwei Parameter entfernen, um es zum Laufen zu kriegen.

HTH

Großartiges Blog

Troy Gilbert scheint mir auch über den letzten Beitrag hinaus ein äußert viel versprechendes Blog zu sein – Leseprobe gefällig?

shapes always get enter frame events, no stage required

How does EventDispatcher allocate new instances of your custom events? It calls the clone() method, which you’re supposed to override if you need those clones to be typed as your custom event. The default clone() returns a new Event instance. How about a clone() that didn’t allocate any memory? What if we returned this? [...] 7 ms vs. 83 ms That’s right, when you take the new out of dispatchEvent() it becomes 182x faster… 11.8x faster than a callback!

Nicht, dass ich das schon alles geprüft hätte. Erstmal freue ich mich über all solche kleinen Häppchen, die mir neu waren :-)

Flash: BlendMode

Gute Übersicht über die Flash-BlendModes in den Adobe Livedocs. Auch interessant für Photoshop-Benutzer (dort heißt es “Füllmethode”), natürlich :-)

Danke an Ben.

AS3: 3D-Text mit “Tiefe”

3dtext

…findet sich bei barcinski-jeanjean.com – Danke, Alex. Anmerkung: Ich musste mein Flex aktualisieren; keine Ahnung, ob Flex 3.4 erforderlich ist, aber mit 3.1 ging es bei mir nicht.

« Older Entries