• J2ME游戏开发之精灵旋转


    image

    image

    package com.slinw.sprite;
    
    import java.io.IOException;
    
    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;
    import com.slinw.unit.Logs;
    
    /**
     * 
     * @author 章伟
     * 要实现精灵的变换最重要的一个概念为:参考像素点(reference pixel)
     *         参考像素点通过指定其在 Sprite未经变换的帧内的某一点来定义,使用 defineReferencePixel(x,y)方法。缺省的,参考像素点定义在帧的(0,0)像素点
     * 我们拿旋转来举例:参考像素点既是我们旋转的圆点
     * 
     * 
     *
     */
    public class SpriteRorateAnim extends RootGameCanvas{
    
        private Image image = null;
        
        private Sprite sprite = null;
        private int left = 10;
        private int top = 10;
        private int[] kFrameLookup;  
        private int[] kFrameTranslateLookup;
        private int mCount = 0;
        private int mDirection = 0;
        
        public SpriteRorateAnim(){
            
            initData();
                
        }
        
        public void initData() {
            // TODO Auto-generated method stub
    
            image = ImageCanvas.getImage("/tank01.png");
            
            sprite = new Sprite(image,57,58);
            
            kFrameLookup = new int[]{0,1,2,
                    0,1,2,
                    0,1,2,
                    0,1,2};  //12帧
            
            kFrameTranslateLookup = new int[]{
                    Sprite.TRANS_NONE,Sprite.TRANS_NONE,Sprite.TRANS_NONE,
                    Sprite.TRANS_ROT90,Sprite.TRANS_ROT90,Sprite.TRANS_ROT90,
                    Sprite.TRANS_ROT180,Sprite.TRANS_ROT180,Sprite.TRANS_ROT180,
                    Sprite.TRANS_ROT270,Sprite.TRANS_ROT270,Sprite.TRANS_ROT270,
            };
            
        }
        
    
        public void drawScreen(Graphics g) {
            // TODO Auto-generated method stub
            g.drawImage(image, left, top, Graphics.LEFT | Graphics.TOP);
            
    //        sprite.setPosition(100,300);    
            mCount ++ ;
            mDirection = mCount % 12;
            
    
            sprite.setFrame(kFrameLookup[mDirection]);
            sprite.setTransform(kFrameTranslateLookup[mDirection]);    
            
                    
            sprite.setPosition(100,300);   //记住要先变换以后在设置图像的位置
        
            
            sprite.paint(g);  
            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
            
        }
    
    
    
    }
    
  • 相关阅读:
    docker命令总结
    VulToEs
    MYSQL
    MoonStack
    Spring mvc json null
    MySQL
    极光推送
    坑爹的RockSaw和坑爹的windows7
    App接口设计思路
    CSUOJ 1329 一行盒子(数组模拟链表)
  • 原文地址:https://www.cnblogs.com/zhangweia/p/2146011.html
Copyright © 2020-2023  润新知