2008-09-24 26 views
2

Dans notre application (un jeu), dans certains cas, il ne peut pas courir assez vite. Évidemment, nous aimerions l'accélérer, mais en attendant, cela provoque de nombreux problèmes (ou si cela ne les cause pas, les deux sont liés). Celui qui est le moins lié à notre propre fonctionnalité est que la méthode intégrée Alert.show() cesse de fonctionner. Typiquement, la boîte transparente en plein écran apparaît mais pas le popup réel. Je crois que c'est à Flex de donner tous les cycles disponibles à d'autres tâches ... mais il s'avère difficile d'enquêter analytiquement, donc je suis heureux d'entendre une autre explication.Que se passe-t-il lorsqu'une application Flex ne peut pas s'exécuter au taux de framerate spécifié?

Pour clarifier, les parties centrales de Flex ne fonctionnent tout simplement pas dans cette situation. J'ai parcouru le code par exemple où un nouvel élément est ajouté à l'écran, tout se passe et la méthode addChild() est appelée sur le canevas d'affichage principal ... mais l'élément n'apparaît pas. Si nous désactivons alors notre boucle de mise à jour, l'élément apparaît soudainement.

Donc, si Flex est supposé exécuter exactement le même code ou non, en quelque sorte, il est étrange de bloquer. Comme je l'ai dit, même la méthode Flex Alert.show() ne fonctionne pas.

Répondre

0

Je ne suis pas sûr que Flex ait son propre système de gestion des performances. Mais pour actionScript pur la seule chose qui arriverait, c'est que le framerate ralentirait jusqu'à un crawl, tout se passera normalement plus lentement. Si vous empilez de très grandes quantités d'objets transparents ou masqués, vous pourriez avoir un comportement étrange, mais cela devrait être plus visible.

Et je suppose que vous dis que faire un jeu dans Flex est pas tant que ça d'une bonne idée (juste à cause de la surcharge de performance le cadre a) est un peu en retard;)

+0

Flex est un bon choix. Bien mieux que d'essayer d'écrire un vrai logiciel dans CS3 ... Je ne sais pas s'il y a beaucoup de frais si vous n'utilisez pas les fonctionnalités spécifiques à Flex de toute façon; c'est la même hiérarchie de rendu que dans Flash. – MidnightGun

+0

Avec Flex, il signifie probablement simplement le compilateur Flex, pas Flex Builder avec mxml etc. – Antti

0

J'aime faire des jeux dans FLEX 3 (actionscript3), sa solution réellement très pratique par rapport à Flash CS3: un bon environnement de débogage sans tracas. Bien sûr cela dépend du style de jeu qui est le meilleur, si vous avez besoin de beaucoup de graphismes, vous pouvez préférer Flash, mais Flex vous permet d'utiliser des images externes, des composants, etc.

Réponse au problème de performance: Vous pouvez utiliser par ex. vieille machine MacOSX pour voir ce qui se passe dans une machine très lente, quelques solutions sont: - déplacer des objets plus x ++ y ++ pixels lorsque la machine est vieux - réduire les objets

vous pouvez détecter avec une minuterie comment la machine lente est.

+0

Je pense qu'il est naturel de supposer qu'un "jeu flexible" utiliserait le framework flexible. Le codage d'un jeu as3 pur en flex-builder n'en fait pas un jeu flexible. L'IDE utilisé ici est vraiment de moindre importance. – grapefrukt

+0

J'ai trouvé en parlant de développement Flex, rien ne peut être supposé. 'Flash' couvre tout, de la conception graphique à la programmation hard-core et Flex est souvent supposé signifier "application de cartographie d'entreprise". – MidnightGun

4

Tout le contenu Flash est exécuté image par image - Flash exécute une valeur de code d'une image, puis met à jour l'écran et attend la prochaine mise à jour de l'image.

Lorsque Flash ne peut pas suivre le framerate spécifié, tout ce qui arrive est qu'au lieu d'attendre entre les mises à jour de cadre, Flash les fait aussi vite que possible sans attendre entre les deux. La seule différence visible est donc que les mises à jour des trames sont moins fréquentes. Il n'y a jamais de cas où le code est ignoré, les événements sont supprimés ou les retraits d'écran sont ignorés pour des raisons de performances (sauf si vous avez trouvé de nouveaux bogues). Ainsi, le problème le plus probable est que vous avez un problème de code très dépendant du temps (comme le code qui s'attend à ce que deux minuteurs se déclenchent sur la même image) ou un autre problème mal diagnostiqué. (Par exemple, il y a peut-être un bug provoquant un ralentissement, plutôt qu'un ralentissement causant votre bug.)