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
            
        }
    
    }
    
  • 相关阅读:
    bzoj3295
    bzoj1135
    [luoguP1328] 生活大爆炸版石头剪刀布(模拟)
    考后总结
    [luoguP1970] 花匠(DP)
    [POJ3463] Sightseeing(次短路 Heap + Dijkstra)
    [luoguP2885] [USACO07NOV]电话线Telephone Wire(DP + 贪心)
    [luoguP2709] 小B的询问(莫队)
    [luoguP1972] [SDOI2009]HH的项链(莫队 || 树状数组 || 主席树)
    [luoguP2617] Dynamic Ranking(树状数组 套 主席树 + 离散化)
  • 原文地址:https://www.cnblogs.com/zhangweia/p/2145914.html
Copyright © 2011-2022 走看看