zoukankan      html  css  js  c++  java
  • J2ME游戏开发之精灵帧动画

    package com.slinw.sprite;
    
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.lcdui.game.Sprite;
    
    import com.slinw.gamecanvas.RootGameCanvas;
    import com.slinw.graphics.ImageCanvas;
    
    
    /**
     * 
     * @author 章伟
     *  帧:
     *      Sprite(Image, int width, int height) :可以把一个图片按照指定的大小绘制成不同的帧
     *  帧序列:
     *      定义了帧以什么样的顺序显示,默认情况下是从0开始
     *  方法:
     *      setFrame(sequenceIndex):将当前帧设置为制定序号的图像
     *      getFrame():得到当前帧的图像序号
     *      prevFrame() :当前帧的前一帧
     *      nextFrame() :当前帧的下一帧
     *  除了从图片获取可运行的帧以外,用户还可以把获得的帧进行自定义
     *  另外要想通过从第几帧开始到第几帧结束,可以通过自定义帧的方式实现
     */
    public class SpriteFrameAnim extends RootGameCanvas{
    
        private Image image;
        private Sprite sprite;
        private Sprite sprite1;
        private int left = 10;
        private int top = 10;
        private int[] FRAME_SEQUENCE ;
        
        public SpriteFrameAnim(){
            initData();
        }
        
        private void initData(){
            
            image = ImageCanvas.getImage("/anim01.png");
            sprite = new Sprite(image,68,60);
            
            sprite1 = new Sprite(sprite);
            userDefineFrameSequence();
        }
        
        
        private void userDefineFrameSequence(){
            FRAME_SEQUENCE =new int[]{0,1,2,3,3,2,1,0};    
            sprite1.setFrameSequence(FRAME_SEQUENCE);
        }
        
        
        public void drawScreen(Graphics g) {
            // TODO Auto-generated method stub
            g.drawImage(image, left,top, Graphics.LEFT |Graphics.TOP);
            
            sprite.setPosition(left, top + 100);   //设置图片绘制的位置
            sprite.paint(g);            //绘制精灵图片
            sprite.nextFrame();   //调用下一帧实现动画
            
            sprite1.setPosition(left, top + 180);
            sprite1.paint(g);
            sprite1.nextFrame();   //调用下一帧实现动画
            
    
            
            this.flushGraphics();
            
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    
        }
    
        public void keyLeftPressedEvent() {
            // TODO Auto-generated method stub
            
        }
    
        public void keyRightPressedEvent() {
            // TODO Auto-generated method stub
            
        }
    
        public void keyUpPressedEvent() {
            // TODO Auto-generated method stub
            
        }
    
        public void keyDownPressedEvent() {
            // TODO Auto-generated method stub
            
        }
    
    }
    
  • 相关阅读:
    C#开发微信门户及应用(30)--消息的群发处理和预览功能
    C#开发微信门户及应用(30)--消息的群发处理和预览功能
    C#开发微信门户及应用(30)--消息的群发处理和预览功能
    ssh密码登陆的原理,密码的公私钥和sshkey的不是一回事
    ssh密码登陆的原理,密码的公私钥和sshkey的不是一回事
    ssh密码登陆的原理,密码的公私钥和sshkey的不是一回事
    ssh密码登陆的原理,密码的公私钥和sshkey的不是一回事
    原生JS设计轮播图
    C#从SQL server数据库中读取l图片和存入图片
    C#从SQL server数据库中读取l图片和存入图片
  • 原文地址:https://www.cnblogs.com/zhangweia/p/2145914.html
Copyright © 2011-2022 走看看