亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sprite.java

?? 一款基于java 的賽車類游戲 一款基于java 的賽車類游戲
?? JAVA
字號:

//package com.nano.KangooJumper;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;

public class Sprite
{
	// frame sequence playback modes
	public final static int FORWARD = 0;
	public final static int FORWARD_RESET = 1;
	public final static int FORWARD_LOOP = 2;
	public final static int PONG = 3;
	
	private Image m_image;
	private int frameWidth;
	private int frameHeight;
	private int framesNum;
	private int m_currentFrame;
	
	private int[] m_frameXOffsets;
	private int[] m_frameYOffsets;

	private int[] m_frameSequence;
	public int m_playbackStartTime;
	private int m_playbackType;
	private int m_timePerFrame;

	public	int	anchor = Graphics.LEFT | Graphics.TOP;
	public int posX, posY;
	public int mapX, mapY;
	public	int	dir;
	public	int	type;
	
	public boolean isMoving, isVisible = true;
	public int m_startX;
	public int m_startY;
	public int m_destX;
	public int m_destY;
	public int m_moveStartTime;
	public int m_moveStopTime;
	private boolean  m_pongSign = false;
	
	public Sprite (Image image, int aFrameWidth, int aFrameHeight)
	{
		m_image = image;
		frameWidth = aFrameWidth;
		frameHeight = aFrameHeight;
				
		calcFrameOffsets ();
	}
	
	public Sprite (int fileId, int aFrameWidth, int aFrameHeight)
	{
		m_image = Utils.LoadImage (fileId);
		frameWidth = aFrameWidth;
		frameHeight = aFrameHeight;
		
		calcFrameOffsets ();
	}

	/*public Sprite (int fileId, int palId, int aFrameWidth, int aFrameHeight)
	{
		m_image = PngLoader.loadImage (fileId, palId, Utils.getFileLen(palId) / 4);

		m_frameWidth = aFrameWidth;
		m_frameHeight = aFrameHeight;
		
		calcFrameOffsets ();
	}*/
	
	public void paint (Graphics g)
	{
		
        if (Main.pauseDuration != 0 && this != Main.GamePlay.sprKangoo) {
            System.out.println("Sprite.paint " + this);
            m_moveStartTime += Main.pauseDuration;
            m_moveStopTime += Main.pauseDuration;
        }		
		if (isMoving == false)
			paint (g, posX, posY);
		else
		{
			int time = Utils.getTime ();
			
			if (time > m_moveStopTime)
			{
				isMoving = false;
				posX = m_destX;
				posY = m_destY;
				paint (g, posX, posY);
			}
			else
			if (time >= m_moveStartTime)
			{
				int x = posX = Utils.interpolate (m_destX, m_moveStopTime, m_startX, m_moveStartTime, time);
				int y = posY = Utils.interpolate (m_destY, m_moveStopTime, m_startY, m_moveStartTime, time);

				paint (g, x, y);
			}
			else
			paint(g, m_startX, m_startY);
		}
	}
	
	public void paint (Graphics g, int x, int y)
	{
		//Utils.Log("paint: "+x+" "+y);
		int frame = m_currentFrame;
		
		if (m_frameSequence != null)
		{
			int dt = Utils.getTime () - m_playbackStartTime;
			if (dt < 0)
				dt = 0;
			int frameIndex = dt / m_timePerFrame;
			int	tmp = frameIndex;
			
			// pong patch
			if ((m_playbackType == PONG) && (m_pongSign))
				frameIndex = m_frameSequence.length - frameIndex -1;
			
			if (tmp >= m_frameSequence.length)
			{
				switch (m_playbackType)
				{
					case FORWARD:
						frame = m_currentFrame = m_frameSequence[m_frameSequence.length - 1];
						m_frameSequence = null;
						break;
					
					case FORWARD_RESET:
						frame = m_currentFrame;
						m_frameSequence = null;
						break;
						
					case PONG:
						m_pongSign = !m_pongSign;
						if (m_pongSign)
							frame = m_frameSequence[m_frameSequence.length - 1];
						else
							frame = m_frameSequence[0];
						
						
					case FORWARD_LOOP:
						m_playbackStartTime = Utils.getTime () - (dt - m_frameSequence.length * m_timePerFrame);
						frameIndex = m_frameSequence[0];
						break;
				}
			}
			else frame = m_frameSequence[frameIndex];
		}
		
		if ((frame < 0) || (!isVisible))
			return;
		
		g.setClip (x, y, frameWidth, frameHeight);
		g.drawImage (m_image,
					 x - m_frameXOffsets[frame],
					 y - m_frameYOffsets[frame],
					 anchor);

	}
	
	public void setFrame (int frame)
	{
		m_currentFrame  = frame;
		m_frameSequence = null;
	}

	public void setFrameSequence (int[] frameSeq, int playbackType, int timePerFrame)
	{
		m_frameSequence = frameSeq;
		m_playbackType = playbackType;
		m_timePerFrame = timePerFrame;
		m_playbackStartTime = Utils.getTime ();
	}

	public void setFrameSequenceTotalTime (int[] frameSeq, int playbackType, int totalTime)
	{
		m_frameSequence = frameSeq;
		m_playbackType = playbackType;
		
		m_timePerFrame = totalTime / frameSeq.length;
		m_playbackStartTime = Utils.getTime ();
	}

	
	public void moveTo (int x, int y, int time)
	{
		isMoving = true;
		m_startX = posX;
		m_startY = posY;
		m_destX = x;
		m_destY = y;
		m_moveStartTime = Utils.getTime ();
		m_moveStopTime = m_moveStartTime + time;
	}
	
	public void setPos (int x, int y)
	{
		posX = x;
		posY = y;
	}
	
	public int getFrame ()
	{
		if (m_frameSequence == null)
			return m_currentFrame;

		int dt = Utils.getTime () - m_playbackStartTime;
		if (dt < 0)
			dt = 0;		
		int frameIndex = dt / m_timePerFrame;
		int	tmp = frameIndex;

		// pong patch
		if ((m_playbackType == PONG) && (m_pongSign))
			frameIndex = m_frameSequence.length - frameIndex -1;

		if (tmp >= m_frameSequence.length)
		{
			switch (m_playbackType)
			{
				case FORWARD:
					return m_frameSequence[m_frameSequence.length - 1];
			
				case FORWARD_RESET:
					return m_currentFrame;
				
				case PONG:
					if (!m_pongSign)
						return m_frameSequence[m_frameSequence.length - 1];
					else
						return  m_frameSequence[0];

				case FORWARD_LOOP:
					return m_frameSequence[0];
			}
		}
		return m_frameSequence[frameIndex];
	}
	
	
	public boolean isPlayingAnim ()
	{
		return m_frameSequence != null;
	}
	
	private void calcFrameOffsets ()
	{
		if (frameWidth > m_image.getWidth())
			frameWidth = m_image.getWidth();
		if (frameHeight > m_image.getHeight())
			frameHeight = m_image.getHeight();
		
		int framesH = m_image.getWidth () / frameWidth;
		int framesV = m_image.getHeight () / frameHeight;
		
		framesNum = framesH * framesV;

		m_frameXOffsets = new int[framesNum];
		m_frameYOffsets = new int[framesNum];
		
		int frame = 0;
		
		for (int yloop = 0; yloop < framesV; yloop++)
		{
			for (int xloop = 0; xloop < framesH; xloop++)
			{
				m_frameXOffsets[frame] = xloop * frameWidth;
				m_frameYOffsets[frame] = yloop * frameHeight;
				frame++;
			}
		}
	}
	
	private	boolean	isIn(int x, int x1, int x2)
	{
		if (x1 < x2)
		{
			if ((x >= x1) && (x <= x2))
				return true;
			else
				return false;
		}
		else
		{
			if ((x >= x2) && (x <= x1))
				return true;
			else
				return false;
		}			
	}
	
	
	public	boolean	collide(Sprite spr)
	{
		if (spr != null)
		{
			//(x2 >= x3) && (x4 >= x1) && (y2 >= y3) && (y4 >= y1
			/*if (((spr.posX + spr.frameWidth) >= posX) &&
				((posX + frameWidth) >= spr.posX) &&
				(spr.posY >= (posY + frameHeight)) &&
				(posY >= (spr.posY + spr.frameHeight)))
				return true;*/
			
			if (((isIn( spr.posX, posX + 10, posX + frameWidth - 10)) ||
				(isIn( spr.posX + spr.frameWidth, posX + 10, posX + frameWidth - 10))) &&
				((isIn( spr.posY, posY +10, posY + frameHeight -10)) ||
				(isIn( spr.posY + spr.frameHeight, posY +10, posY + frameHeight - 10))))
				return true;
		}
		
		return false;
	}
	
	public void reset()
	{
		//posX = 0;
		//posY = 0;
		m_frameSequence = null;
		isMoving = false;
		isVisible = true;
		m_startX = 0;
		m_startY = 0;
		m_destX = 0;
		m_destY = 0;
		m_moveStartTime = 0;
		m_moveStopTime = 0;	
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品伊人色| 91在线国产观看| 成人a免费在线看| 欧美日本一区二区三区| 中文字幕免费不卡在线| 日韩制服丝袜av| 菠萝蜜视频在线观看一区| 日韩欧美在线影院| 自拍视频在线观看一区二区| 狠狠狠色丁香婷婷综合久久五月| 欧美中文字幕久久| 国产欧美精品一区二区三区四区| 亚洲午夜电影在线观看| 成人av网址在线观看| 精品日韩在线观看| 肉肉av福利一精品导航| 91国偷自产一区二区三区成为亚洲经典 | 麻豆91精品视频| 91福利国产精品| 国产精品盗摄一区二区三区| 激情综合网av| 欧美一级国产精品| 亚洲超碰精品一区二区| 欧美系列一区二区| 尤物av一区二区| 91丨九色porny丨蝌蚪| 亚洲欧洲精品天堂一级| 高清国产一区二区| 久久这里只有精品首页| 国产一区二区三区国产| 精品日产卡一卡二卡麻豆| 精品综合久久久久久8888| 91精品国产综合久久久蜜臀图片 | 久久精品久久精品| 91.com在线观看| 日韩av高清在线观看| 制服丝袜激情欧洲亚洲| 亚洲亚洲人成综合网络| 欧美日韩国产乱码电影| 亚洲国产cao| 欧美一卡在线观看| 久久国产精品99精品国产| 精品乱码亚洲一区二区不卡| 黄色日韩网站视频| 久久精品视频在线看| 国产**成人网毛片九色| 亚洲情趣在线观看| 欧美日韩一区不卡| 奇米777欧美一区二区| 日韩视频在线一区二区| 久草精品在线观看| 精品福利一二区| 成人国产在线观看| 亚洲第一成年网| 日韩欧美在线1卡| 天天操天天色综合| 欧美日韩在线亚洲一区蜜芽| 粉嫩一区二区三区在线看| 一本久久a久久精品亚洲| 欧美主播一区二区三区美女| 91精品婷婷国产综合久久竹菊| 精品美女一区二区| 久久免费电影网| 91精品国产色综合久久ai换脸| 一本一道波多野结衣一区二区| 成人免费视频网站在线观看| 亚洲图片你懂的| 在线观看亚洲一区| 久国产精品韩国三级视频| **网站欧美大片在线观看| 欧美主播一区二区三区美女| 国内成人免费视频| 亚洲综合一区二区三区| 精品日韩一区二区| 色欲综合视频天天天| 秋霞电影一区二区| 国产精品看片你懂得| 91精品国产综合久久婷婷香蕉| 成人午夜在线免费| 青青草国产成人av片免费| 国产精品国产三级国产aⅴ中文| 欧美日本不卡视频| 成人va在线观看| 日本三级韩国三级欧美三级| 18欧美亚洲精品| 精品成人私密视频| 欧美挠脚心视频网站| 99久久久久久| 国产一区二区不卡在线| 日本中文在线一区| 中文字幕一区av| 久久亚洲综合av| 91精品国产综合久久久久久漫画| 色婷婷av一区二区三区软件| 丁香一区二区三区| 精品亚洲porn| 麻豆精品新av中文字幕| 亚洲成人1区2区| 亚洲桃色在线一区| 国产日韩三级在线| 欧美大白屁股肥臀xxxxxx| 欧美三级乱人伦电影| 成人免费看黄yyy456| 国产在线不卡一区| 久久精品国产成人一区二区三区| 亚洲v中文字幕| 亚洲国产精品麻豆| 夜夜嗨av一区二区三区网页 | 久久久久国产成人精品亚洲午夜| 欧美日韩另类一区| 欧美午夜影院一区| 欧美在线综合视频| 欧美网站大全在线观看| 日本一区二区三区四区在线视频| 岛国精品在线播放| 亚洲制服丝袜av| 伊人开心综合网| 国产精品亲子伦对白| 5566中文字幕一区二区电影| 国产高清不卡一区| 91搞黄在线观看| 亚洲天堂av老司机| 日韩美女天天操| 一区二区三国产精华液| 欧美日韩极品在线观看一区| 在线观看日韩高清av| 欧美日韩综合在线| 精品视频一区 二区 三区| 欧美婷婷六月丁香综合色| 欧美色爱综合网| 日韩天堂在线观看| 国产欧美一区二区精品婷婷 | 一区二区免费看| 亚洲综合在线视频| 日本美女一区二区三区| 蜜桃久久精品一区二区| 国产在线看一区| 99在线热播精品免费| 日本韩国精品在线| 欧美一区二区在线看| 亚洲国产精品99久久久久久久久| 国产精品国产三级国产aⅴ原创 | 色综合夜色一区| 欧美性大战久久久| 欧美一级精品在线| 国产精品女同一区二区三区| 亚洲一区二区三区美女| 另类小说视频一区二区| 国产成人午夜视频| 欧美性做爰猛烈叫床潮| 日韩午夜在线观看| 一区免费观看视频| 五月天婷婷综合| 国产福利一区二区三区| 欧美在线免费播放| 国产亚洲精品超碰| 午夜电影网亚洲视频| 高清视频一区二区| 欧美三电影在线| 中文字幕精品综合| 青青国产91久久久久久 | 国产精品国产三级国产三级人妇| 午夜久久电影网| 丁香桃色午夜亚洲一区二区三区| 精品污污网站免费看| 国产欧美一区二区精品久导航| 午夜精品久久久久久久99樱桃| 成人在线一区二区三区| 欧美男人的天堂一二区| 亚洲图片激情小说| 国产在线不卡视频| 欧美一区二区三区免费大片| 亚洲人成精品久久久久久| 久久精品国产亚洲aⅴ| 欧美午夜免费电影| 国产精品午夜在线观看| 免费美女久久99| 欧洲精品一区二区| 国产精品网曝门| 国产在线麻豆精品观看| 91精品国产欧美日韩| 亚洲一区二区在线观看视频 | 国产精品69久久久久水密桃| 精品视频999| 综合久久国产九一剧情麻豆| 国产精品小仙女| 欧美日韩二区三区| 欧美精品tushy高清| 久久九九久精品国产免费直播| 人人爽香蕉精品| 3d成人h动漫网站入口| 国产精品亚洲视频| 日韩一区二区三区视频| 午夜激情一区二区三区| 欧美亚洲高清一区| 亚洲综合久久av| 精品视频在线看| 天堂av在线一区| 9191成人精品久久| 美女视频免费一区|