Archive pour mai 2009
Pixel Bender : BlendMode Color for Flash Player 10
Posté par lunar dans Actionscript, Filtres et Blendmodes, Flash Player 10, Pixel Bender le 28 mai 2009
Depuis Flash Player 10, il est possible de créer ses propres modes de fusion grâce à Pixel Bender.
Les modes de fusion les plus répandus et bien connus des utilisateurs de Photoshop/Gimp/.. sont déjà implémentés de base dans le Flash Player.
Le mode de fusion “Color”, que j’apprécie particulièrement et utilise très souvent en Digital Painting n’est cependant pas existant.
J’en parlais déjà dans un post précédent “à l’aube” de Pixel Bender, mais le rendu était différent entre Pixel Bender et FP10 :/. Je tendais à penser que c’était un bug d’intégration de Pixel Bender dans le Flash Player; en fait, il s’est avéré que le bytecode généré par Pixel Bender était bugué, puisque une compilation avec la dernière version de Pixel Bender (v1.5, build 01) donne le rendu attendu pour le mode de fusion.
Etant stable, je peux donc maintenant le partager avec vous : BlendModeColor.swc
Usage :
import decora.graphics.shaders.ColorBlendMode; myDisplayObject.blendShader = new ColorBlendMode();
Bonne utilisation
Problème de try,catch,switch
Posté par lunar dans Actionscript, Général le 5 mai 2009
Récemment je travaillais sur un bout de code ayant un switch et quelques try/catch. Je me retrouvais avec une erreur inattendue qui semblait montrer que la pile du flash player était corrompue.
Après simplification, voici le code minimal qui pose le contexte :
package
{
import flash.display.Sprite;
public class TryCatchSwitchTest extends Sprite
{
public function TryCatchSwitchTest ()
{
doSwitch("doTry");
}
private function doSwitch(type:String):void
{
switch (type)
{
case "doTry":
try
{
trace("try");
throw new Error("Erreur volontaire");
} catch (e:Error)
{
return;
}
return;
default:
return;
}
}
}
}
La partie posant problème est le return du bloc catch {}. Ceci tend à penser que l’implémentation des try/catch/finally n’est pas encore totalement au point. D’autres bugs dans un contexte similaire ont été constatés. Heureusement il est facile de contourner le problème, mais je trouve dommage qu’on soit obligé de modifier un algorithme à cause de ce genre de choses…
En conclusion, éviter au possible des retours brutaux dans des blocs try/catch/finally.

Communauté française sur flex, AIR et LiveCycle