Aller au contenu | Aller au menu | Aller à la recherche

jeudi 3 juillet 2008

L'AS3 calcule plus vite...

... dommage qu'il soit nul en maths !

trace (0.01 * 1624);

Résultat : 16.240000000000002

Wééééé...

lundi 23 juin 2008

Réduction de BitmapData & Smoothing : Pourquoi c'est pas beau (et comment améliorer)

En Flash on peut être amené à manipuler des BitmapData, par exemple si on code les vignettes d'une galerie photo (c'est un exemple qui revient souvent ;-)... Voilà une première méthode "brute" qui prend un BitmapData et en retourne un autre au ratio voulu :

public static function reduceBitmapData (bmp:BitmapData, ratio:Number):BitmapData {
	var bmpData:BitmapData = new BitmapData(Math.round(bmp.width * ratio), Math.round(bmp.height * ratio));
	var scaleMatrix:Matrix = new Matrix(bmpData.width / bmp.width, 0, 0, bmpData.height / bmp.height, 0, 0);
	bmpData.draw(bmp, scaleMatrix);
		
	return (bmpData);
}

Et là forcement, on se rend vite compte que le résultat est pas génial. Donc on se dit que le paramètre smoothing de la méthode draw est LA solution, et on utilise un truc du genre :

public static function resizeBitmapData (bmp:BitmapData, ratio:Number):BitmapData {
	var bmpData:BitmapData = new BitmapData(Math.round(bmp.width * ratio), Math.round(bmp.height * ratio));
	var scaleMatrix:Matrix = new Matrix(bmpData.width / bmp.width, 0, 0, bmpData.height / bmp.height, 0, 0);
	var colorTransform:ColorTransform = new ColorTransform();
	bmpData.draw(bmp, scaleMatrix, colorTransform, null, null, true);
			
	return (bmpData);
}

Cruelle déception... autant ça donne des résultats corrects quand le ratio est proche de 1, autant les différences avec la méthode précédente sont quasi nulles quand on demande une grosse réduction... Pourquoi ?

Eh bin tout simplement parce que le filtre utilisé par Flash est un filtre bilinéaire, et qu'il est bien connu (c'est marqué dans Wikipedia) que ce filtre, rapide, trouve rapidement ses limites dans les ratio < 50% ou > 200%

Y'a rien à faire alors ?

Bah non...

Nan attendez, revenez, j'aurais pas fait un billet juste pour un pauv' paramètre smoothing. Si le filtre bilineaire est efficace pour des ratio de 50%, on va simplement procéder récursivement de 50% en 50% jusqu'au ratio voulu :

public static function resampleBitmapData (bmp:BitmapData, ratio:Number):BitmapData {
	if (ratio >= 1) {
		return (BitmapManager.resizeBitmapData(bmp, ratio));
	}
	else {
		var bmpData:BitmapData = bmp.clone();
		var appliedRatio:Number = 1;
		
		do {
			if (ratio < 0.5 * appliedRatio) {
				bmpData = BitmapManager.resizeBitmapData(bmpData, 0.5);
				appliedRatio = 0.5 * appliedRatio;
			}
			else {
				bmpData = BitmapManager.resizeBitmapData(bmpData, ratio / appliedRatio);
				appliedRatio = ratio;
			}
		} while (appliedRatio != ratio);
		
		return (bmpData);
	}
}

Les calculs sont un peu plus longs (on a rien sans rien), mais les résultats sont maintenant dignes d'un PhotoShop !

Pour les flemmards, le fichier regroupant les 3 méthodes est ici

jeudi 15 mai 2008

Flash Player 10 BETA

Allez cette fois-ci c'est pas un poisson d'avril, la beta du nouveau Flash Player 10 "Astro" est disponible sur le lab Adobe

Et moi qui compile encore en 8 dans 95% des cas... -__-'

jeudi 1 mai 2008

SWF, format propriétaire, mais format ouvert !

C'est nouveau et ça cloue enfin le bec à tous ceux qui reprochaient à Flash d'utiliser un format "fermé" (ce qui était déjà pas totalement juste) : Le format SWF 9 est maintenant clairement ouvert, documenté (ça c'est pas nouveau), et désormais sans aucune restrictions sur son utilisation (ça c'est nouveau) !

Une bonne nouvelle dans le cadre du Open Screen Project

[Source : Open at Adobe via FCNG]

vendredi 25 avril 2008

Flash est encore passé en qwerty pfff

Comme toujours, si vous êtes un vrai killer de Flash et de Windows, vous allez doucement rigoler en lisant ce post mais pour les goonies comme moi, voila une petite astuce qui m'est venu aujourd'hui. La connexion neuronale s'est faite au moment ou je dessinais un cercle parfait depuis le centre !

Il vous est peut-être déjà arrivé de voir Flash passer subitement en anglais. Tout cela s'explique par une combinaison de touche fréquemment utilisée dans l'environnement auteur: SHIFT+ALT. Cette combinaison est également utilisée par Windows comme raccourci pour basculer le clavier dans la langue suivante dans la liste des langues installées pour le clavier, généralement l'anglais.

Pour éviter ca, il vous suffit de virer l'anglais de la liste des claviers supportés, trop fort...

PS: Une petite astuce ca fait toujours du bien en attendant "Pratique de la planche à voile avec Thibault Imbert et Mabrouk" bientot en Open source sur ByteArray.org !

mardi 1 avril 2008

Flash player 9.0.122beta

Le nouveau flash player 9.0.122 est disponible en beta sur labs.adobe.com.

Parmi les nouveautés :

  • Tous les bugs sur les TextFields ont été corrigés !
  • Support d'une nouvelle coordonnées z pour les clips, comme présenté lors du MAX
  • Possibilité de proposer en téléchargement le contenu d'un bytesArray
  • Support complet du XHTML 1.1 dans les TextFields
  • Gestion du deuxième bouton de la souris
  • Compatibilité Silverlight 1.1

Les performances ont été grandement améliorées, approchant maintenant quasiment celles d'un PC d'il y a 15 ans !
Disponible sur Windows, Linux et machine Nespresso. On comprend mieux le nom de code de ce player, "RamboSix", parce qu'il tue tout !

jeudi 13 mars 2008

FLV et mod_deflate

Un titre bien barbare pour rapporter un bug qui m'a causé quelques suées...

Je charge un flv dans un player Flash en progressive download avec NetConnection etc...; ça marche en local, ça marche sur mon serveur de développement, mais une fois en ligne l'estimation du chargement et le buffer sont complètement dans les choux...

La cause ce bug : le mod_deflate (ex mod_gzip) sur le serveur Apache qui gzippe à la volée les données pour les navigateurs compatibles HTTP 1.1 (tous les navigateurs modernes). Il faut absolument l'empêcher de gzipper les flv, ce qui ce fait dans le httpd.conf (pour ceux qui on un serveur dédié). Classiquement les fichiers jpeg, png et gif sont déjà dans ce cas; il suffit de rajouter swf et flv à liste liste :

# Don't compress images
    SetEnvIfNoCase Request_URI \
      \.(?:gif|jpe?g|png|swf|flv)$ no-gzip dont-vary

mercredi 8 août 2007

Ce qu'il y a de bien avec l'AS3...

c'est qu'on a l'impression que tout est clean, que tout est bien fait... Mais en fait c'est toujours aussi pourri et bricolé. Depuis 2 jours qu'on bosse dessus chez Yamago, que des bugs:

  • la valeur position de la classe Sound qui renvoie des valeurs totalement imprécises
  • les paramètres de composants (Inspectable) qui sont initialisés une frame après le constructeur (plus d'autres subtilités tout aussi gravos...)

Des bugs tellement enormes qu'on se demande comment ils existent encore après plus d'un an de test sur ce language. Enfin comme ca on est pas dépaysé, on sait qu'on fait du flash ;)

lundi 4 juin 2007

Adobi© Flash© CS3© - Aller un petit pour commencer la semaine ;)

pas mal l'idée de mettre à jour le soft une fois installé (surtout qu'il en aurait bien besoin), dommage que ca marche pas...

mardi 22 mai 2007

Flash Develop 3 c'est parti !

En voila de la nouvelle, perso je l'attendais plus que Flash 9.

http://www.flashdevelop.org/community/viewtopic.php?t=1436

PS: merci à Abym pour la source de l'info ;)

lundi 16 avril 2007

Nouvelle version du lecteur Flash et tchao Yahoo

Ca se passe comme ca au pays de la liberté (encore quelques semaines pour la france). Les accords se font et se défont.

Avec le nouveau player flash sur Internet Explorer, un nouveau partenaire, exit Yahoo, maintenant c'est google.

M'en fout j'utilise pas IE. Par contre j'ai pas l'intention de déménager :(

jeudi 12 avril 2007

Opera Wii quelques infos complémentaires

Opera

  • Navigateur: Opera
  • Version: 9.10 (Nintendo Wii; U;1621; fr)
  • Code: Mozilla
  • Plateforme: Nintendo Wii

Pour les dimensions: La barre est plus petite de 12 pixels par rapport à la version d'essai ce qui donne:

  • Largeur: 800
  • Hauteur: 512

Quand la barre est invisible:

  • Largeur: 800
  • Hauteur: 612

Flash

  • version: Wii 7.0.70.0 (pas de nouveauté)

Pour info, en mode "barre apparente en permanence" le flash peut occuper 512 pixels de haut et n'est pas masqué. Quand on choisi le mode "automatique" ou "manuel", le flash s'étend au maximum et occupe alors 612 pixels de haut. La barre de menu masque alors le flash. A priori on ne peut donc pas gérer avec Stage.onResize, l'apparition ou disparition de la barre de menu.

UPDATE: Opera Wii permet de visualiser plusieurs curseurs de wiimotes à l'écran. Hélas seul un curseur est actif. Vous me direz normal, mais j'avais plein d'idées de jeux débiles avec plusieurs wiimotes dommage...

curseurs multiples à quoi ca sert ?

Voila pour ce soir ;)

samedi 24 mars 2007

La sensor bar aux vin blanc et aux aromates.

Salut les kids ! A la demande de quelque geek en mal de sensations, j'ai ramené dans mes filets une sensor bar pour Wii toute fraiche pêchée du grand nord. Notez que cet accessoire ( qui s'accordera avec votre intérieur quel que soit son style... ) vous permettra soit d'utiliser le pointeur d'une Wiimote sur un ordinateur, ou bien de remplacer la sensor bar d'origine de la Wii ( plus de fil à la patte !!! ). Existe aussi en version moules marinières, poulpe à l'escabèche et crabe deluxe.

mardi 6 mars 2007

WiiFlash - Buttons Demo

Voilà une première vidéo où je présente un peu plus le projet WiiFlash, dans cette vidéo je fais une petite démonstration de l'utilisation des boutons de la Wiimote dans Flash, puis j'explique un peu l'API côté AS3.

Les fonctionnalitées principales de la Wiimote (accélération, mouvement, etc) sont aussi gérées, d''autres demos à venir très bientôt :)

Plus d'infos sur la page du projet : http://www.wiiflash.org/

mercredi 28 février 2007

le saviez-vous ?

Une découverte bien cool (comme d'hab si vous le savez deja parce qu'un Guru l'a annoncé il y a 18mois, rigolez doucement en vous disant comment ils sont à la ramasse sur envrac...).

Lire la suite