怎样通过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





