6
votes

Comment changer de vitesse pendant la cabasicanimation d'animation

Dans ma demande, j'utilise Cabasicanimation pour l'animation. Je veux changer la vitesse de l'animation de manière dynamique afin que j'ai ajouté un curseur pour modifier la vitesse. Voici mon code d'animation. Mais je ne suis pas en mesure de changer la vitesse, lorsque je change la valeur de la vitesse, rien ne se passe. XXX


2 commentaires

6 Réponses :


0
votes

Définir la vitesse comme ce dont vous avez besoin.

    a.duration=0.5;


1 commentaires

Je veux une vitesse dynamique basée sur la valeur du curseur. L'animation est complètement bien pour les valeurs statiques



2
votes

Edit: On dirait que vous aurez un autre problème, cependant: il ne ressemble à , vous pouvez modifier des valeurs comme celle-ci sur une animation en cours d'exécution. Vous devrez supprimer l'animation actuelle et ajouter une nouvelle avec la valeur modifiée. Cela peut avoir besoin d'un peu de soin pour empêcher un effet de jarring lorsque vous ajoutez la nouvelle animation.

Du fil ci-dessus, vous pourrez peut-être le faire en ne répétant pas l'animation, mais en utilisant un délégué ( voir ici ) pour continuer à ajouter l'animation et définir la nouvelle vitesse pour le prochain cycle d'animation.

POST D'ORIGINAL:

Vous modifiez la valeur que vous aviez passée à l'origine à l'animation. Cela ne va pas affecter l'animation de course. Vous devrez faire une référence à cela et modifier la propriété de la durée de l'objet d'animation. Quelque chose comme ça dans votre méthode d'action: xxx


2 commentaires

J'ai examiné cela un peu plus et vous ne pouvez pas changer la valeur d'une animation en cours d'exécution. Voir mon édition


Voici comment vous faites une animation Redémarrable de nos jours dans iOS .. Stackoverflow.com/a/45787919/294884 < / a>




1
votes

Je pense que Jrturton est correct que vous ne pouvez pas modifier les propriétés sur une animation qui fonctionne déjà. Mais ce que vous pouviez faire est de briser l'animation en segments courts et de modifier la vitesse du segment suivant lorsque la valeur du curseur change.

Au lieu d'animer du point A au point D, vous animeriez d'A-B, puis B-C, puis C-D. Utilisez l'animationDidStop de la classe mère pour vérifier le point de courant, vérifier la valeur du curseur et lancer la prochaine animation suivante.

Cela pourrait produire un mouvement saccadé, mais si vous utilisez de très petits segments, vous pourrez peut-être le lisser.


0 commentaires

1
votes

u devrait arrêter l'animation et redémarrer un nouveau avec une nouvelle durée

Mais n'oubliez pas de vous déconnecter de FromValue et de la tavalue, et utilisez l'ancien tavalue comme neuf devalue pour effectuer un changement sans couture


0 commentaires

6
votes

Je pense que la meilleure façon de changer la vitesse est de modifier le système de temps de votre couche xxx

Vous pouvez voir ceci pour avance. https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coreanimation_Guide/advancedanimationtricks/advancedanimationtricks.html#/apple_ref/doc/uid/tp40004514-ch8-sw2 < / p>


2 commentaires

@Fattie - Vous cherchez probablement quelque chose de différent. C'est la réponse exacte et précise pour le problème. Ça marche pour moi magnifiquement.


Je comprends ce que vous voulez dire @lesnie - et oui, cela fournirait une solution dans certaines situations. Cependant, cela change l'échelle de temps pour la couche entière. Avoir besoin de changer les propriétés d'une animation en cours d'exécution est un problème courant (et ennuyeux dans IOS). J'ai cliqué sur "+1" sur votre réponse :) bonne année!