2009-11-29 41 views
1

Je crée un jeu dans JavaFX et j'ai implémenté un curseur pour contrôler la vitesse du jeu. J'ai un simple curseur (javafx.scene.control.Slider) et je lie l'attribut time pour le gameloop à la valeur que je reçois du curseur.Modification dynamique d'un attribut d'heure d'images clés dans JavaFX

Le curseur ne fonctionne vraiment que lorsque le gameplay augmente. Si je le diminue, le gameUpdate() s'arrêtera pendant un moment - en fonction de combien je le perds. Si j'augmente le curseur en attendant que le jeu se rattrape, le jeu continuera à nouveau. Parfois, le jeu ne semble pas rattraper du tout, peu importe combien de temps j'attends.

Est-ce que changer l'heure des images clés est une mauvaise idée en général ou est-ce que j'oublie quelque chose d'autre? J'ai essayé de changer la variable canSkip, et cela semble rendre le jeu plus fluide quand ça recommence, mais cela ne m'aide pas beaucoup.

def gameLoop:Timeline = Timeline{ 
    repeatCount: Timeline.INDEFINITE 
    keyFrames: [ 
     KeyFrame{ 
      time: bind Duration.valueOf(Config.REFRESH_RATE_NUMBER - gameSpeed) 
      action: function(){ 
       gameUpdate(); 
      } 
     } 
    ]//keyFrames[] 
}// Timeline{} 

Répondre

1

Je l'ai vu une situation assez similaire à celle (bien que dans JavaFX 1.1.1), qui je l'ai signalé dans JIRA

Je trouve que cela a été résolu si je bougeais la déclaration du niveau de script - dans mon cas c'était dans une fonction d'initialisation (pas le bloc init {}).

Cependant, je suis d'accord que changer l'heure de l'image-clé dynamiquement est une mauvaise idée. L'utilisation de "sous-lignes" dans l'extrait que vous avez publié n'est apparemment pas prise en charge et la solution recommandée consiste à utiliser les timelines JavaFX 1.2 SequentialTransition et ParallelTransition.

Lisez le rapport d'anomalie JIRA pour plus d'informations et renvoyez-le s'il ne résout pas le problème.

+0

À moins d'avoir mal compris (ce qui arrive tout le temps), je n'utilise aucune sous-ligne dans mon extrait. Les timelines de sous-cadences ne sont-ils pas dans les images clés du scénario d'origine? Et d'après ce que je peux voir, ces parties du code que vous avez posté sur JIRA ne devraient pas vraiment affecter le temps de toute façon. Le temps lié à une variable variable semble être encore le problème. Je ne pouvais pas le faire fonctionner quand je déplaçais la déclaration non plus. L'avez-vous déplacé en dehors de tout le script? – Vargen

+0

J'espérais que le rapport de bug vous donnerait quelques indications plutôt que d'être une solution directe. Pour aller de l'avant, pouvez-vous essayer d'utiliser les classes * Transition à la place? J'ai trouvé que cette zone était plutôt buggée quand j'ai essayé, alors peut-être que vous pourriez essayer d'augmenter dans JIRA si vous n'avez toujours pas de succès? –

0

Je suggère de générer une séquence d'images clés dans une fonction, puis de supprimer et de redéfinir les images clés. Avec la liaison, il semble qu'il pourrait essayer d'ajuster la chronologie pendant que l'utilisateur fait glisser le curseur.