7
votes

Android: Tween Animation d'un bitmap

Mon application implémente ses propres sprites en appelant les éléments suivants dans ONDRAW () CODE> MÉTHODE:

  canvas.drawBitmap(sprite.getBitmap(), sprite.getX(), sprite.getY(), null);


0 commentaires

4 Réponses :


1
votes

Vous pouvez faire la quinte d'animation sans le imageview provenant d'un fichier XML, mais il n'a pas besoin d'être une vue dans votre hiérarchie de vue.

Le dessin que vous faites dans votre Canvas est opaque à la hiérarchie de vue. Je pense que vous avez deux options:

  1. superposez un imageview au-dessus de votre vue personnalisée et animer qui utilise Tween Animations.
  2. Utilisez Canvas Dessinez des routines pour animer votre explosion.

    Je dirais que l'utilisation de routines en toile , ainsi que leurs transformations Maxtrix, il est logique que vous avez probablement déjà un fil d'animation dans votre application.


5 commentaires

Si vous chalez un jeu, vous pouvez utiliser des vecteurs (mathématiques) pour mettre à jour la position de vos images, puis dessiner avec GetX et Gety. Vous devriez iTER et mettre à jour ce vecteur dans une certaine direction à travers une certaine vitesse.


@Marcos: Je mettez déjà en place une sorte de vecteur dans ma classe Sprite (emplacement X / Y, X / Y Veclocités). Y a-t-il une classe standard pour cela que j'ai oublié?


Pensez-vous qu'il est logique d'utiliser imageviews pour les sprites avec une sorte de positionnement absolu, puis comptez-vous également sur eux pour dessiner? C'est le genre d'animation que je suis habitué à faire sur iPhone avec une animation de base, et j'ai été surpris que quelque chose de similaire n'était pas l'exemple recommandé à Android. Android semble encourager à mettre à jour manuellement la toile à intervalles réguliers. Je me demande si c'est simplement parce que l'exemple que j'ai choisi était une simulation physique et il n'y a pas de moyen automatisé de modéliser des dizaines de particules, chacune exerçant des forces gravitatives sur les autres.


Je ne le pense pas, même si j'ai une expérience relativement peu importante dans ce domaine. ImageView devrait être à l'intérieur d'une hiérarchie de vue, et je ne pense pas qu'il soit généralement utilisé comme superposition pour une vue basée sur une toile.


Désolé, je ne voulais pas commenter cela. Voir la réponse



0
votes

Vous pouvez dessiner et animer votre explosion dans Adobe Flash, exporter les images Sprite à l'aide de swfsheet ou similaire, puis utilisez Animation de cadre


0 commentaires

0
votes

Si vous créez une partie, vous pouvez utiliser des vecteurs (mathématiques) pour mettre à jour la position de vos images, puis dessiner puis avec GetX et Gety. Vous devriez itérer et mettre à jour ce vecteur dans une certaine mesure à travers une vitesse.

Ces vecteurs ne sont pas indigènes (les API de jeu a).

Vous avez besoin d'avoir une boucle pour itérer et mettre à jour la position, puis redessinez.

Pour les jeux, ce n'est pas une bonne idée d'avoir des composants tels que l'image pour faire des animations. Ils ont besoin du système pour calculer à nouveau toute la mise en page au fil du temps.


0 commentaires

10
votes

J'ai construit un moteur générique Tween en Java que vous pouvez utiliser pour animer quoi que ce soit, y compris vos sprites. Il est optimisé pour Android et Jeux, car il n'alloit rien au moment de l'exécution, pour éviter toute collection d'ordures. De plus, les tweens sont regroupés, donc vraiment: pas de collection de déchets du tout!

Vous pouvez voir une démo complète ici en tant qu'application Android, ou ici en tant que page WebLL HTML (nécessite chrome)! strong> p>

Tout ce que vous avez à faire est d'implémenter l'interface tweenAccessor code> à Ajoutez entre Tween Support à tous vos Sprites. Vous n'avez même pas besoin de changer votre classe Sprite, il suffit de créer un Spritetweenaccessor code> qui implémente TweenAccessor code> et l'enregistre sur le moteur à l'initialisation. Juste jeter un coup d'œil au Page de Wiki GetStarted ;) P>

http://code.google.com/p / Java-Universal-Tween-Engine / P>

logo p >

Je construis également un éditeur de chronologie visuelle pouvant être intégré à toute application. Il comportera une chronologie similaire à l'outil de création de flash et à l'expression de l'expression (un outil de devir Silverlight). P>

Tout le moteur est fortement documenté (toutes les méthodes publiques et les classes ont détaillé Javadoc) et la syntaxe est tout à fait Semblable au moteur TweenMax / Tweenlite de Greensock utilisé dans le monde flash. Notez qu'il prend en charge chaque équation de Robert Penner. P>

Timeline.createSequence()
    // First, set all objects to their initial positions
    .push(Tween.set(...))
    .push(Tween.set(...))
    .push(Tween.set(...))

    // Wait 1s
    .pushPause(1.0f)

    // Move the objects around, one after the other
    .push(Tween.to(...))
    .push(Tween.to(...))
    .push(Tween.to(...))

    // Then, move the objects around at the same time
    .beginParallel()
        .push(Tween.to(...))
        .push(Tween.to(...))
        .push(Tween.to(...))
    .end()

    // And repeat the whole sequence 2 times
    // with a 0.5s pause between each iteration
    .repeatYoyo(2, 0.5f)

    // Let's go!
    .start();


2 commentaires

Je viens de mettre à jour un peu la description, car le moteur a fait des progrès énormes depuis le moment où j'ai écrit la réponse :)


@ Aurélienribon, cela fournit-il une animation d'un sprite à un sprite différent?