canvas教程

Android精灵动画用法实例

字号+ 作者:H5之家 来源:H5之家 2015-11-19 10:21 我要评论( )

IT学习网是国内以普及电脑技术的学习资料网站,本站历经长期发展已深得广大电脑爱好者的好评和喜爱,为您提供从基础到高端的信息技术学习平台,我们也努力将IT学习

本文实例讲述了Android精灵动画用法。分享给大家供大家参考。具体如下:

ElaineAnimated.java文件如下:

package net.obviam.walking.model; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; public class ElaineAnimated { private static final String TAG = ElaineAnimated.class.getSimpleName(); private Bitmap bitmap; // the animation sequence private Rect sourceRect; // the rectangle to be drawn from the animation bitmap private int frameNr; // number of frames in animation private int currentFrame; // the current frame private long frameTicker; // the time of the last frame update private int framePeriod; // milliseconds between each frame (1000/fps) private int spriteWidth; // the width of the sprite to calculate the cut out rectangle private int spriteHeight; // the height of the sprite private int x; // the X coordinate of the object (top left of the image) private int y; // the Y coordinate of the object (top left of the image) public ElaineAnimated(Bitmap bitmap, int x, int y, int width, int height, int fps, int frameCount) { this.bitmap = bitmap; this.x = x; this.y = y; currentFrame = 0; frameNr = frameCount; spriteWidth = bitmap.getWidth() / frameCount; spriteHeight = bitmap.getHeight(); sourceRect = new Rect(0, 0, spriteWidth, spriteHeight); framePeriod = 1000 / fps; frameTicker = 0l; } public Bitmap getBitmap() { return bitmap; } public void setBitmap(Bitmap bitmap) { this.bitmap = bitmap; } public Rect getSourceRect() { return sourceRect; } public void setSourceRect(Rect sourceRect) { this.sourceRect = sourceRect; } public int getFrameNr() { return frameNr; } public void setFrameNr(int frameNr) { this.frameNr = frameNr; } public int getCurrentFrame() { return currentFrame; } public void setCurrentFrame(int currentFrame) { this.currentFrame = currentFrame; } public int getFramePeriod() { return framePeriod; } public void setFramePeriod(int framePeriod) { this.framePeriod = framePeriod; } public int getSpriteWidth() { return spriteWidth; } public void setSpriteWidth(int spriteWidth) { this.spriteWidth = spriteWidth; } public int getSpriteHeight() { return spriteHeight; } public void setSpriteHeight(int spriteHeight) { this.spriteHeight = spriteHeight; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } // the update method for Elaine public void update(long gameTime) { if (gameTime > frameTicker + framePeriod) { frameTicker = gameTime; // increment the frame currentFrame++; if (currentFrame >= frameNr) { currentFrame = 0; } } // define the rectangle to cut out sprite this.sourceRect.left = currentFrame * spriteWidth; this.sourceRect.right = this.sourceRect.left + spriteWidth; } // the draw method which draws the corresponding frame public void draw(Canvas canvas) { // where to draw the sprite Rect destRect = new Rect(getX(), getY(), getX() + spriteWidth, getY() + spriteHeight); canvas.drawBitmap(bitmap, sourceRect, destRect, null); canvas.drawBitmap(bitmap, 20, 150, null); Paint paint = new Paint(); paint.setARGB(50, 0, 255, 0); canvas.drawRect(20 + (currentFrame * destRect.width()), 150, 20 + (currentFrame * destRect.width()) + destRect.width(), 150 + destRect.height(), paint); } }

希望本文所述对大家的Android程序设计有所帮助。

标签分类:

android 动画 上一篇:上一篇:Android实现粒子爆炸效果的方法
下一篇: 下一篇:android中开启actionbar的两种方法

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 众创缘 web前端开发,ui设计,seo,网络营销互联网技术学习网站

    众创缘 web前端开发,ui设计,seo,网络营销互联网技术学习网站

    2017-03-29 14:00

  • 网页设计师必看的30个HTML5学习网站

    网页设计师必看的30个HTML5学习网站

    2017-03-25 18:03

  • HTML5教程画布Canvas基础知识讲解,html5学习网

    HTML5教程画布Canvas基础知识讲解,html5学习网

    2017-03-14 09:01

  • HTML5初学者福利!11个在线学习网站推荐

    HTML5初学者福利!11个在线学习网站推荐

    2017-01-23 08:02

网友点评