怎样让手机显示600*400的图片啊?

B33655365 2005-02-28 09:13:01
我的一张图片是600*400的,我想用手机方向键来移动这张图,请问怎么实现啊?
是不是要把图片分割,然后一张结一张这样啊?
...全文
500 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfggg 2005-03-04
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/TopicView1.asp?id=3822668
B33655365 2005-03-03
  • 打赏
  • 举报
回复
额~~~~~~~~~,用我朋友的ID发出回复了,请问GAMESPEED513我运行你段代码,怎么虚拟机一闪就没了啊.怎么才能让他运行起来啊?
a0000718 2005-03-03
  • 打赏
  • 举报
回复
原来要用到GAMECANVAS,请问怎么能你给那段代码在虚拟机里面可以显示出来地图啊?
a0000718 2005-03-03
  • 打赏
  • 举报
回复
谢谢大家的意见啊,谢谢大家给的代码,请问GAMESPEED513你的那段代码我怎么运行了会虚拟机一闪就没了啊?
我的图片大小是97KB.
zhang21cnboy 2005-03-02
  • 打赏
  • 举报
回复
没有手机能够支持那么大的图片!

一般的手机,一张图片大小不能超过120k
yefeng177 2005-03-02
  • 打赏
  • 举报
回复
xViewWindow, yViewWindow, wViewWindow, hViewWindow 是GameCanvas的游戏域, 说白了
就是0, 0, getWidth(), getHeight()
前面的if是判断是否需要预览模式, 楼主可以忽略
WORLD_WIDTH, WORLD_HEIGHT是你800*600图片的宽高
行业达人 2005-03-02
  • 打赏
  • 举报
回复
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class ExampleGameCanvas extends GameCanvas implements Runnable
{
private boolean isPlay; // Game Loop runs when isPlay is true
private long delay; // To give thread consistency
private int width; // To hold screen width
private int height; // To hold screen height
private int scnX, scnY; // To hold screen starting viewpoint
private int IndexImage=0;
// Sprites to be used
Image backgroundImage;
private Sprite backgroundSprite;

// Layer Manager
private LayerManager layerManager;

// Constructor and initialization
public ExampleGameCanvas() throws Exception
{
super(true);
width = getWidth();
height = getHeight();

scnX = 55;
scnY = 20;
delay = 20;

// Load Images to Sprites
backgroundImage = Image.createImage("/background.png");

backgroundSprite = new Sprite(backgroundImage);

layerManager = new LayerManager();
layerManager.append(backgroundSprite);


}

// Automatically start thread for game loop
public void start()
{
isPlay = true;
Thread t = new Thread(this);
t.start();
}

public void stop()
{
isPlay = false;
}

// Main Game Loop
public void run()
{
Graphics g = getGraphics();
while (isPlay == true)
{

input();
drawScreen(g,IndexImage);
try
{
Thread.sleep(delay);
} catch (InterruptedException ie)
{
}
}
}

// Method to Handle User Inputs
private void input()
{
int keyStates = getKeyStates();

if ((keyStates & LEFT_PRESSED) != 0)
{
if (scnX - 1 > 0)
scnX--;
}
if ((keyStates & RIGHT_PRESSED) != 0)
{
if (scnX + 1 + 100 < backgroundImage.getWidth())
scnX++;
}

}

// Method to Display Graphics
private void drawScreen(Graphics g,int indeximage)
{

g.setColor(0xffffff);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0x0000ff);

// display all layers
layerManager.setViewWindow(scnX, scnY, 100, 100);
layerManager.paint(g, 5, 5);

flushGraphics();
}

}
yefeng177 2005-03-02
  • 打赏
  • 举报
回复
补充一下, x 和y 是我一个Sprite的起点坐标
adjustViewWindow是GameCanvas里面的方法

还有, 注释该加的忘加, 不该加的加了, 不好意思 ^_^
yefeng177 2005-03-02
  • 打赏
  • 举报
回复
我正好有一份类似代码, 楼主可以参考
把原图按原来大小加载到sprite, 利用layermanager显示不同的区域
就是虚屏的概念吧

具体做法
x = getX();
y = getY();
w = getWidth();
h = getHeight();
在响应过键事件后, 改变x 和y 坐标
传入adjustViewWindow(x, y, getWidth(), getHeight()函数进行修正:

/**重新设置图层显示区域
* @param x 玩家潜艇位置x
* @param y 玩家潜艇位置y
* @param width 玩家潜艇宽
* @param height 玩家潜艇高
*/
public void adjustViewWindow(int xSub, int ySub, int width, int height) {
if (this.userViewWindow)
{
xViewWindow = xSub + (width / 2) - (wViewWindow / 2);
if (xViewWindow < 0)
{
xViewWindow = 0;
}
if (xViewWindow > (WORLD_WIDTH - wViewWindow))
{
xViewWindow = WORLD_WIDTH - wViewWindow;
}

yViewWindow = ySub + (height / 2) - (hViewWindow / 2);
if (yViewWindow < 0)
{
yViewWindow = 0;
}
if (yViewWindow > (WORLD_HEIGHT - hViewWindow))
{
yViewWindow = WORLD_HEIGHT - hViewWindow;
}

layerManager.setViewWindow(xViewWindow,
yViewWindow,
wViewWindow,
hViewWindow);
}
}

ps: 这个例子nokia有一个版本的demo也有, 记不清了, 有段时间了
javagodness 2005-03-02
  • 打赏
  • 举报
回复
建议你参考一下FLEX对这个问题的制作办法
B33655365 2005-03-02
  • 打赏
  • 举报
回复
我地图已经有了,只是希望可以显示出来,然后用方向键来移动,哪位高手可以给我段这样的代码吗?
congbailing_914 2005-03-01
  • 打赏
  • 举报
回复
方法很多,至于用哪种,就要看你的选择了,或者是多考虑一下用户的感觉!




好象不能加分啊!不过你可以再开帖子啊!
B33655365 2005-03-01
  • 打赏
  • 举报
回复
谢谢大家的意见啦,能不能可以给我段可以让图片在屏幕上移动的代码让我参考参考啊?
sy5591 2005-03-01
  • 打赏
  • 举报
回复
在屏幕上面就会把那个建筑显示在屏幕的中间

这个应该没有关系啊 分割和你现在什么位置是没有关系的,也不麻烦
滚动就相当于一个小框套了一个大图,位置算好就行了

加分我也不会
efei 2005-03-01
  • 打赏
  • 举报
回复
你如果说做地图的话,一般不会做成一张大的整图的,而是利用地图文件把许多小的图片拼成一个大图片,这样会比较节省资源

至于图片的移动,你只要定义当前屏幕的坐标,根据坐标画对应的图片

这样改变坐标值就相应移动了图片
cuilichen 2005-02-28
  • 打赏
  • 举报
回复
主要是内存的问题,如果内存允许。那么可以使用你所说的方法来实现,也可以首先将图片进行必要的分割,在显示的时候,将可见部分的图片显示出来。当然,加载的图片肯定比要显示的图片多一部分。
goodnow 2005-02-28
  • 打赏
  • 举报
回复
6600可以显示176*208
sy5591 2005-02-28
  • 打赏
  • 举报
回复
这就是虚屏吧
很简单的 自己把像素算精确就好了
6600 不知道是多少 似乎不会小于176*176
prok 2005-02-28
  • 打赏
  • 举报
回复
600*400?不知道会不会内存不足.你可以通过改变图片得坐标实现
B33655365 2005-02-28
  • 打赏
  • 举报
回复
我准备在NOKIA6600里面做,请问6600可以显示多少的啊?
还有如何实现滚屏啊?
加载更多回复(4)

13,096

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧