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
- All improvements
- Flash Player 10 API on Libspark project
[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:
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 !
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 !
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
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).