2008-11-27 4 views
5

À l'heure actuelle, je développe un petit moteur graphique 2D orienté canvas pour un jeu, et j'ai cherché dans plusieurs sources des conseils à appliquer à la conception de mon système. Mais évidemment, la solution la plus éprouvée sur le marché est Flash, donc je me demandais comment Flash est architecturé. J'ai trouvé quelques sources sur le fonctionnement de Flash, mais la plupart sont très basiques et orientées vers les designers et les artistes, mais j'aimerais en savoir plus sur les tripes du système. Ma prochaine étape est de télécharger le code source de Flex et de le parcourir, mais avant cela, j'aimerais avoir un «guide» pour tirer le meilleur parti de mon temps dans la base de code. Des suggestions de bonnes ressources et articles en ligne?Comment fonctionne Flash?

Merci! Pour plus de clarté, je suis à la recherche du fonctionnement interne de Flash parce que mon but ici est de faire quelque chose de similaire à Flash, mais pas aussi puissant bien sûr, qui fonctionne dans un navigateur sans plugins . Hélas pur HTML + Javascript.

La raison pour laquelle je n'utilise pas Flash en tant que tel, c'est parce qu'il ne répond pas à mes exigences (gratuit + sans plugin), et parce que je ne supporte pas Flash sur mes plateformes cibles la roue ici pour le plaisir et l'auto-éducation. Oh et je sais déjà comment utiliser Flash :)

+0

Pas une réponse directe à votre question, donc je garde cela comme un commentaire ... Connaissez-vous http://ejohn.org/blog/processingjs/? C'est un port de traitement vers JavaScript, proche de votre objectif final ... La boîte à outils Dojo JS permet également à JS de dessiner soit sur IE soit sur des navigateurs supportant le canevas. FYI. – PhiLho

+0

Je ne réponds pas du tout à ma question, mais c'est un projet très sympa et similaire à beaucoup de ce dont j'ai besoin pour l'étudier. –

Répondre

7

Eh bien, à la racine de votre contenu Flash se trouve un objet stage (une instance de la classe Stage). Cette étape est le nœud racine d'un arbre d'objets d'affichage, chacun d'entre eux pouvant contenir des ressources graphiques (lignes, champs de texte, etc.) ou d'autres objets d'affichage. Comment Flash "fonctionne" est que, X fois par seconde, le lecteur Flash dessine tout l'arbre d'affichage sur l'écran. Le lecteur recueille également l'entrée de l'utilisateur (KeyboardEvents, etc.) à partir du système d'exploitation et les livre à tout objet qui a été enregistré pour eux. Votre travail en tant que créateur de contenu consiste donc à peupler cette scène avec des enfants (de type DisplayObject ou toute sous-classe), que le moteur Flash affichera à l'écran pour vous. Vous pouvez le peupler avec des enfants de bas niveau comme Sprite et MovieClip et TextField, qui sont les composants de base du contenu Flash, ou vous pouvez instancier des éléments comme ScrollBar ou DataGrid, qui sont des composants de niveau supérieur avec les mécanismes internes complexes habituels.

Et bien sûr, vous pouvez étendre l'une de ces classes pour inclure vos propres visuels personnalisés ou votre logique de classe, ou créer des classes non visuelles qui ne font pas partie de l'arborescence d'affichage. Et vous pouvez charger dans un autre contenu flash, ou faire des connexions HTTP, etc etc

Tout cela en supposant que vous voulez dire AS3. Est ce que ça aide? Sinon, vous allez devoir préciser votre question. ;)

+0

Oui, ça aide, mais si vous aviez quelques bonnes ressources, ce serait encore mieux. –

+0

Euh, j'aurais dû être plus précis, vos liens vers les docs sont d'une grande aide, mais je me demandais s'il y avait des livres blancs ou un document à ce sujet –

+0

Je vois où vous allez. Les choses sont généralement très similaires au graphique FL que vous avez lié (mais avec moins de boîtes "Device XXX", et je pense que "Device OS" et "Frame buffer" seraient partiellement remplacés par les hooks du plugin du navigateur). Mais je ne connais aucun livre blanc particulier ni aucune spécification publique. – fenomas

1

Si vous allez faire un jeu, rester loin de Flex. Et honnêtement, regarder le code source pour cela est susceptible de vous embrouiller plus que de vous aider. Flex est très bon pour les applications gourmandes en IHM, et permet d'accélérer le développement de tels produits. Il n'est cependant pas très rapide ni particulièrement bien adapté aux jeux.

L'un des principaux avantages de Flash est que vous n'avez pas vraiment à vous soucier des "mécanismes internes", bien que leur compréhension de base les aide naturellement. Flash Lite est assez différent de son grand frère, alors ne vous y occupez pas trop.

Également, pour l'amour de Dieu, apprendre Actionscript 3.0 et rester à l'écart d'Actionscript 2. 3.0 est bien meilleur de toutes les manières imaginables (au moins pour nous les codeurs).

EDIT: Pour clarifier: Il existe une certaine confusion concernant le terme Flash. Il y a trois parties à tout cela, le plugin qui fonctionne dans votre navigateur, la "technologie elle-même" et l'outil de création. Tout cela est simplement appelé Flash. Flex encore plus déroutant. C'est un framework qui fonctionne sur Flash. Un peu comme dire, Swing for Java (je n'ai jamais utilisé ça pour que la comparaison soit totalement fausse). Tout ce que vous pouvez faire dans Flex est également faisable dans Flash. Flex est open source libre, mais l'IDE, Flex Builder ne l'est pas. Flex Builder est très utile même si vous faites des projets "purs" ActionScript. Mais il existe également de nombreuses alternatives moins chères. Personnellement, je préfère FlashDevelop.

+0

L'environnement flexible est probablement assez bon pour construire des jeux AS3 mais oui la bibliothèque flex n'est pas ce dont vous avez besoin – jcoder

+0

Oui, je suis d'accord, je viens de lire une partie du code Flex, mais ce n'était pas du tout ce que je cherchais pour. J'ai cru par erreur que le code du moteur Flash était inclus dans OpenSource SDK de Flex, mais il n'était pas –

+0

Notez que bien que Flash Player ne soit pas open source, Adobe a récemment édité le moteur AS3 lui-même, ce qui devrait exposer l'architecture essentielle. Google "mozilla tamarin" pour info. – fenomas