CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2ME

怎样通过j2me实现把一个图片或图形从一点延一条直线移动到另一点啊?

楼主chinareny2k()2006-12-01 22:39:22 在 Java / J2ME 提问

以前总是用move(x,y){}做,但只能设定每次移动的步长,无法精确的按照某一路径移动,哪位大侠教教小弟阿!! 问题点数:0、回复次数:9Top

1 楼opk8848803()回复于 2006-12-02 15:37:41 得分 0

Graphics的一个方法  
  drawImage(Image   img,   int   x,   int   y,   int   anchor)    
  中有画这张图片位置的参数x,y,只要x,y值满足某条直线的方程即可。Top

2 楼HugeJB(她说我的好大)回复于 2006-12-02 18:03:19 得分 0

你   可以用定点数来做  
   
  简单说就是<<   16   ,然后   >>16Top

3 楼chinareny2k()回复于 2006-12-02 18:17:21 得分 0

?还是不太明白,有没有什么简单的例子阿!!Top

4 楼chinareny2k()回复于 2006-12-02 18:19:47 得分 0

Graphics的一个方法  
  drawImage(Image   img,   int   x,   int   y,   int   anchor)    
  中有画这张图片位置的参数x,y,只要x,y值满足某条直线的方程即可。  
  ------------------------------------------------  
  我知道改变x,y的值可以改变图片的位置,就是太清楚怎样让x,y值满足这条直线!!Top

5 楼xoyojank()回复于 2006-12-03 13:05:42 得分 0

你在主循环里加个直线方程不行吗?  
  y   =   ax   +   bTop

6 楼chinareny2k()回复于 2006-12-04 09:06:42 得分 0

哦,我试试看啊Top

7 楼cxz7531(大花猫)回复于 2006-12-04 14:46:24 得分 0

如果你的CLDC支持浮点数,按照这个办法。如果不支持,就稍微改动近似实现  
  public   static   void   main(String[]   args)   {  
  double[]   start   =   {   100.,   100.   };  
  double[]   end   =   {   200.,   150.   };  
  double   d   =   Math.sqrt((end[0]   -   start[0])   *   (end[0]   -   start[0])  
  +   (end[1]   -   start[1])   *   (end[1]   -   start[1]));  
  double   step   =   d   /   50.;//假定分50步  
  for   (int   i   =   0;   i   <=   50;   i++)   {  
  double   x   =   start[0]   +   i   *   step   *   (end[0]   -   start[0])   /   d;  
  double   y   =   start[1]   +   i   *   step   *   (end[1]   -   start[1])   /   d;  
  System.out.println("第"   +   i   +   "步:("   +   x   +   ","   +   y   +   ")");  
  }  
  }Top

8 楼cxz7531(大花猫)回复于 2006-12-04 14:53:14 得分 0

简化一下  
  public   static   void   main(String[]   args)   {  
          double[]   start   =   {   100.,   100.   };  
          double[]   end   =   {   200.,   150.   };  
          int   count   =   50;  
          for   (int   i   =   0;   i   <=   count;   i++)   {  
              double   x   =   start[0]   +   i   *   (end[0]   -   start[0])   /   count;  
              double   y   =   start[1]   +   i   *   (end[1]   -   start[1])   /   count;  
              System.out.println("第"   +   i   +   "步:("   +   x   +   ","   +   y   +   ")");  
          }  
      }Top

9 楼MagicPeng(彭彭)回复于 2006-12-15 16:31:08 得分 0

学习  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:chinareny2k

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo