Hello :)

Très bon exemple en effet :)

Juste une petite remarque :) A mon avis pour éviter les prises de tête il
faut essayer d'externaliser le système de cache dans une classe externe et
éviter de réimplémenter dans chaque classe le moteur du proxy :)

A voir si utile au passage de mettre une classe CacheProxy dans Maashaack ?
Faudra en discuter ;)

Pour ceux que cela intéresse il y a aussi la classe dont parle Zwetan dans
le projet GAForFlash qui peut servir de complément à l'exemple ci-dessus :
http://code.google.com/p/gaforflash/source/browse/trunk/src/com/google/analytics/core/TrackerCache.as

PS : Dommage que toutes les classes en AS3 n'héritent pas de Proxy ou qu'il
n'y est pas de __resolve en AS3 comme en AS1 ou AS2 ... ce serait beaucoup
plus simple même si cela ne solutionnerai pas tous les problèmes non plus :)

EKA+ :)

Le 21 avril 2009 01:25, Xavier MARTIN <[email protected]> a écrit :

> Merci zwetan, clair que ca peut etre utile dans a peu pres toutes les
> appli...
> Je vais tester ca ds mon prochain projet
> Cheers,
> ----------------------------------------------------------------------
> Xavier MARTIN aka zeflasher or xxlm
> Visit my website if you love flash:
> http://www.webbymx.net
> http://dev.webbymx.net
> ----------------------------------------------------------------------
>
>
> 2009/4/21 zwetan <[email protected]>
>
> Salut,
>>
>> voila un petit pattern, qui en fait plus ca va, plus je le reutilise
>> donc je me dis que ca peut etre utile ailleurs ;)
>>
>>
>> donc voila le Load / Cache /Proxy pattern
>> (version AS3, je prevois une version qui load du AS2 et prends le
>> control de la meme maniere ;) )
>>
>> en gros ca permet de loader un swf externe et de ne pas attendre qu'il
>> soit fini de telecharger pour
>> l'ajouter dans la display list
>>
>> ET en meme temps
>> de pouvoir directement appeler des commandes dessus
>>
>> (ET par extension, permet de tout loader en asyncrone)
>>
>>
>> en gros ca se passe comme ca,
>> vous avez un sprite qui utilise Loader pour charger le swf (le Load)
>> et qui initialise un "cache", qui va enregistrer en memoirel es
>> methodes appelee sur le swf (le Cache)
>> une fois le swf loade, on l'injecte dans un proxy, ceci permet de
>> renforcer l'interface que tout le monde partage (le Proxy)
>> [en gros, vous ne pouvez pas faire un cast de votre loader.content
>> vers une interface]
>>
>> apres, le cache et le proxy sont switches
>> cad que si il ya des commandes en cache, on les appliques sur
>> l'instance du proxy
>> et on remplace la ref interne par le proxy
>>
>> voir le diagramme et le code source ;)
>>
>> pour la petite histoire on utilise le systeme de cache (fait par eka
>> =)) dans gaforflash
>> ce qui permet dans le component visuel pour Flash de ne pas attendre
>> la 2nde frame
>> pour pouvoir appeler des commandes sur le GATracker
>>
>> et moi j'utilise tout le Load/Cache/Proxy pour notre game_manager a
>> Miniclip
>> ce qui nous permet de donner un SWC au developpeurs et d'utiliser un
>> swf interne pour le site web
>>
>> dans les 2 quand on charge un swf externe, on a pas a attendre pour
>> commencer a l'utiliser
>>
>> ex:
>> le dev drag n drop le component dans son Flash IDE
>> et il fait un
>> var myavatar:YoMe = MiniclipGameManager.avatars.load( 12345 );
>> addChild( myavatar );
>> myavatar.setPosition( 100, 200 );
>>
>> -> pas besoin d attendre pour un ou des events, tout est gere par le
>> Load/Cache/Proxy
>>
>> et en gros quand on load un avatar, on load un swf qui charge plein
>> d'autres swf enfants,
>> et que si on n'utilisait pas le Load/Cache/Proxy on devrait attendre
>> 1 - que le loader.content souit charge
>> 2 - que tous les swf enfants soient charges
>> bref ca forcerait a ecouter presque 2 events
>>
>> enfin voila, je poste ca, si les gens on le temps de regarder et/ou
>> peuvent trouver ca utile
>> et/ou on d'autres idees pour faire la meme chose (voir meme en plus
>> simple)
>> je suis ouvert a la discussion et aux comments =)
>>
>> zwetan
>>
>> ps: le mot "pattern" est plus un peid de nez que autre chose ;)
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "FCNG" de 
Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/FCNG?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à