Posts By Mem's

Astro say :

Some classes name from ABC data :

//Inverse Kinematics
fl.ik:IKBone
fl.ik:IKJoint
fl.ik:IKNode
fl.ik:IKLink
fl.ik:IKSubTree
fl.ik:IKArmature
fl.ik:IKShapeTree
fl.ik:IKShapeNode
fl.ik:IKUtils
fl.ik:Contour
fl.ik:ContourPoint
fl.ik:ConnectionData
fl.ik:IKSymbolNode
fl.ik:IKManager

//Vector Data Type
__AS3__.vec.Vector

//Maybe not new ?
GraphicsPath
IGraphicsData

//Custom Filters and Effects
Shader
flash.filters:ShaderFilter
flash.display:ShaderParameter

//?
com.adobe.astrobox.events:FaceEvent
com.adobe.astrobox.events:Tween3DEvent
com.adobe.astrobox.events:TrackEvent
com.adobe.astrobox.transitions:Tween3D
com.adobe.astrobox.managers:FaceManager
com.adobe.astrobox.display:Face
com.adobe.astrobox.views:Main//Use for Main.swf

//Text
vellum_flash

//FOV property access
<DisplayObject>.transform.perspectiveProjection.fieldOfView = 50

[How to] Transparency to mask

When you open an PNG file or make an layer with transparents pixel and when you wish convert the transparent layer to opaque layer with mask, you can’t.

Photoshop only let select pixel (with transparency) and create mask with selection where selected is white and unselected is black (for value between selected and unselected is gray more or less white or black). See step 1.

But you can’t remove transparency of pixel on layer (set transparency to 100%)

For do that in Photohop, you need a 3rd part filter: d-xparen plugin. Download and place d-xparen.8bf in Photoshop plugin directory. (On Window, you need to add to your system32 folter MSVCRT10.DLL for supporting this filter).

You can also do this with ExtendScript …

Step 1: Select transparent pixels

Step 2: create mask (alpha channel) with selection

Step 3: Apply detransparent filter

Final

Now you have converted your transparent layer to opaque layer with mask !

Resources:

BLAZE

BLAZE Language

Impossible de réconcilier int et String – Flash Bug

Taper (1 || "").toString(); dans le code d’une classe ou dans la timeline et compiler …

Ca donne un erreur 1068 : Impossible de réconcilier int et String.
D’après la doc ça doit donner “int et String ne peuvent pas être rapprochés.”

A mon avis c’est un “bug” du compileur qui ne fait pas de check de ce qu’il y a dans les parenthèses. Le VM elle quand elle vois ça elle sais pas si toString c’est de int, de String ou de leur parent Object.

Pour résoudre le problème suffit de forcer la conversion dans un type définit :

Object(1 || "").toString();

Flash Player local trust

Ca arrive souvant de devoir tester en locale un fichier flash en dehors du logiciel d’authoring Flash ou Flex en visualistant soit dans le Standalone Player (Projector) ou avec le plugin d’un navigateur.
Sauf que quand une animation nécéssite à la fois de charger ou lier des éléments local (relatifs) et ditants (absolut avec “http://” ou “https://”) une boite apparait indiquant que animation tente une opération non authorisé.
Tout ça c’est à cause du fait qu’il existe 4 zones (“sandbox”) (voir 5 pour le sytème de sécurité < FP8) :

  • remote
  • local-with-filesystem
  • local-with-networking
  • local-trusted

Par défaut l’export de Flash (et Flex ?) le fichier flash est authorisé seulement à acceder au fichiers locaux (“local-with-filesystem”), configurable dans le panneau d’export de Flash ou en ajoutant un paramètre de compilation pour le FlexSDK (-use-network=true|false) ou après l’export, sur un fichier local en utilisant Flash Local Content Updater ou SWF SandBox Type Switcher. On a alors la possibilité de le configurer soit en “local-with-filesystem” ou “local-with-networking”.
L’animation pourra donc acceder soit aux chemins locaux absolus soit aux chemins locaux relatifs (semblables aux chemins distant relatifs) tel que c:\folder01\folder02\file01.ext ou /folder01/folder02/file01.ext ou file:///C:/folder01/folder02/file01.ext ou encore ./../folder03/file01. La syntaxe est dépendante du system hôte de l’animation flash (préférer un syntaxe de type “file://” ou relatif avec des séparateur “/”).

Seulement c’est soit tout locale soit seulement accès disants. Pour autoriser les deux à la fois, il existe différentes manière de procéder (Overview of permission controls) :

  • Ce rendre sur le Global Security Settings panel (directement) et d’ajouter le chemin local absolu du fichier flash (ou d’un dossier le contenant)
  • Ajouter un fichier .cfg comportant une ligne par chemin d’animation locale authorisé dans le dossier %APPDATA%\Macromedia\Flash Player\#Security\FlashPlayerTrust\ ou {APP_DATA}/Macromedia/Flash Player/#Security/FlashPlayerTrust/
  • Même chose mais pour le chemin %WINDIR%\system32\Macromed\Flash\FlashPlayerTrust\ ou {APP_SUPPORT}/Macromedia/FlashPlayerTrust/

On peut faire à la barbare et utiliser la dernière méthode en ajoutant un fichier qui contient :

# Authorisation pour tout le disque C
C:\
file:///c:/
# Authorisation pour un emplacement Samba
\\ServerSMB\share\
file://///ServerSMB/share/

Chaque enregistrement est mis en chemin Windows (pour IE) et en URI
Ca signifie que tout les flash sur le disque C:\ et sur le réseau \\ServerSMB\share\ ont les droits Trust !

Plus d’informations :

Flash Player 9 Update 3, Version 9.0.115.0

Outre les ajouts connu tels que le support des codecs H.264/HE-AAC, de la gestion du multicore dans les tâches de rendu (vectoriel, travail par pixel …) de flash player et la régression sur certaines choses comme l’evenement Event.SOUND_COMPLETE ou des bug toujours pas corrigés.
Certains ajout sont apparus sans qu’on en parle trop, dont une que je viens de découvrir : LoaderInfo::getLoaderInfoByDefinition().
Cette méthode statique permet récuperer le LoaderInfo de n’importe quel Object associé à un SWF. En fait c’est n’importe quel objet(Object), classe (Class), méthode de la racine (top level) … tout sauf de type Number, int et uint, null, undefined, String et Boolean (j’en oublie peut être d’autres).

L’un des avantages que j’ai tout de suite vu, que je cherchais à faire depuis un bout de temps : récuperer l’url du flash chargé (LoaderInfo.loaderURL ou LoaderInfo.url) dans lequel mon code s’execute, sans avoir un accès direct au Stage, par exemple pour une classe qui n’est pas un DisplayObject.

var target:Object = new Object();// new Sprite()|Number|int|Class|this|new Array()|[]|...
var loaderInfo:LoaderInfo = LoaderInfo.getLoaderInfoByDefinition(target);
// loaderInfo === <root>.loaderInfo
trace(loaderInfo.loaderURL);

Attention l’accès ne peut ce faire qu’après l’evenement Event.COMPLETE du root du SWF sinon le code d’erreur d’execution 2099 est retourné pour la majorité des propriété du LoaderInfo

package
{
	import flash.display.Sprite;
	import flash.display.LoaderInfo;
	import flash.events.Event;

	public class GetLoaderInfoByDefinitionDemo extends Sprite
	{
		public function GetLoaderInfoByDefinitionDemo():void
		{
			this.loaderInfo.addEventListener(Event.COMPLETE, this.traceLoaderInfoProperties, false, 0, false);
		}
		private function traceLoaderInfoProperties(event:Event):void
		{
			var loaderInfo = LoaderInfo.getLoaderInfoByDefinition([]);
			trace("actionScriptVersion: " + loaderInfo.actionScriptVersion);
			trace("applicationDomain: " + loaderInfo.applicationDomain);
			trace("bytes: " + loaderInfo.bytes);
			trace("bytesLoaded: " + loaderInfo.bytesLoaded);
			trace("bytesTotal: " + loaderInfo.bytesTotal);
			trace("childAllowsParent: " + loaderInfo.childAllowsParent);
			trace("content: " + loaderInfo.content);
			trace("contentType: " + loaderInfo.contentType);
			trace("frameRate: " + loaderInfo.frameRate);
			trace("height: " + loaderInfo.height);
			trace("loader: " + loaderInfo.loader);
			trace("loaderURL: " + loaderInfo.loaderURL);
			trace("parameters: " + loaderInfo.parameters);
			trace("parentAllowsChild: " + loaderInfo.parentAllowsChild);
			trace("sameDomain: " + loaderInfo.sameDomain);
			trace("sharedEvents: " + loaderInfo.sharedEvents);
			trace("swfVersion: " + loaderInfo.swfVersion);
			trace("url: " + loaderInfo.url);
			trace("width: " + loaderInfo.width);
		}
	}
}

As3 Eval 0.2

L’ouverture du code (Tamarin) de la Machine Virtuel ActionScript 2 (AVM2) ne pouvais être que bénéfique. En voici une preuve !

Une librairie qui permet d’évaluer du code ActionScript 3 EcmaScript 4 au run-time tout écrit en AS3.
On a la possibilité en plus de générer le bytecode, décompiler du bytecode, de récuperer les erreurs d’execution (tout ça à la volé) :
La démo !

Une autre librairie permettais déjà de le faire depuis quelques temps, mais l’inconvénient c’est qu’elle est payante et ne bénéficie pas du projet Tamarin.

Moi qui veux dans un futur plus ou moins loin voir parallèle 😉 réaliser un moteur AS3/ES4 en JavaScript qui puisse utiliser le même code JavaEcmaActionScript sur presque n’import quel navigateur (IE!, FF, Opera, Safari …) ça ne peut qu’aider !
J’ai aussi dans l’idée de faire un moteur Web (like Geko, Tridion, WebKit …) permettant en plus d’avoir une page HTML(+CSS +IMG +SWF) dans Flash de pouvoir supporter le JavaScript (voir même de l’ES4), avec ça ça sera beaucoup plus facile !

Eval on hurlant.com

[Original] [Web archive] Eval 0.2 sources

As3Crypto

Package AS3 supportant beaucoup d’algorithmes de cryptage/hashage/sécurité

  • Protocols: TLS 1.0 support (partial)
  • Certificates: X.509 Certificate parsing and validation, built-in Root CAs.
  • Public Key Encryption: RSA (encrypt/decrypt, sign/verify)
  • Secret Key Encryption: AES, DES, 3DES, BlowFish, XTEA, RC4
  • Confidentiality Modes: ECB, CBC, CFB, CFB8, OFB, CTR
  • Hashing Algorithms: MD2, MD5, SHA-1, SHA-224, SHA-256
  • Paddings available: PKCS#5, PKCS#1 type 1 and 2
  • Other Useful Stuff: HMAC, Random, TLS-PRF, some ASN-1/DER parsing

Beaucoup mieux que Adobe Core Lib !

As3Crypto on hurlant.com

[Original] [Web archive] AS3 Crypto sources

Le temps est déja pris …


Ces derniers jours je suis obligé de bosser bcp plus longtemps que d’hab. J’avais commencé à installer se blog, l’occuper, mais j’ai pas le temps de l’aménager. J’ai pourtant commencé, mais il va falloir attendre …

Let’s go ! Take off

Let's go and fly
Ca y est ! J’me lance aussi dans l’écriture d’un blog.

Seulement comme j’aime pas parler / écrire pendant longtemps je vais pas faire des billets long de 3km mais juste mettre des images, des liens, du code, de idées et p’t’être aussi faire des tutos. Mon premier but dans l’ouverture de ce blog c’est pour moi même. Ca me permettera de mémoriser des infos utiles (ou potentilement) que j’ai pu récupérer et compiler lors de recherche (hasardeuses ?) sur le web.

L’avantage comme ça d’avoir un blog monté sur son propre esapace web, ne dépendant donc pas d’un fournisseur de service web, c’est que cette info me sera toujours dipo (suffit de faire des sauvegardes de ce que je vais).