java-尝试获取在屏幕上绘制的每个随机圆的x,y坐标
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-尝试获取在屏幕上绘制的每个随机圆的x,y坐标,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3523字,纯文字阅读大概需要6分钟。
内容图文
![java-尝试获取在屏幕上绘制的每个随机圆的x,y坐标](/upload/InfoBanner/zyjiaocheng/695/a2cbff6edee7433e8d1cfc383602dcd8.jpg)
您好,我正在制作一款会在屏幕上创建随机圆圈的游戏.随机创建的圆的值将为红色或绿色.我的问题是,我不仅希望能够确定用户何时单击了一个圆圈,还可以确定用户最终单击了哪个圆圈(红色或绿色).这是下面的代码.我的主要问题是试图找到要绘制的圆的x和y
public class DrawingView extends View {
public DrawingView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
RectF rectf = new RectF(0, 0, 200, 0);
private static final int w = 100;
public static int lastColor = Color.BLACK;
private final Random random = new Random();
private final Paint paint = new Paint();
private final int radius = 230;
private final Handler handler = new Handler();
public static int redColor = Color.RED;
public static int greenColor = Color.GREEN;
int randomWidth =(int) (random.nextInt(Math.abs(getWidth()-radius/2)) + radius/2f);
int randomHeight = (random.nextInt((int) Math.abs((getHeight()-radius/2 + radius/2f))));
private final Runnable updateCircle = new Runnable() {
@Override
public void run() {
lastColor = random.nextInt(2) == 1 ? redColor : greenColor;
paint.setColor(lastColor);
invalidate();
handler.postDelayed(this, 1000);
}
};
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
handler.post(updateCircle);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
handler.removeCallbacks(updateCircle);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// your other stuff here
canvas.drawCircle(randomWidth, randomHeight + radius/2f, radius, paint);
}
@Override
public boolean onTouchEvent (MotionEvent event) {
double r = Math.sqrt(((randomWidth^2)+(randomHeight^2)));
int maxX = (int) (((randomWidth)*(randomWidth)) + r);
int minX = (int) ((((randomWidth)*(randomWidth))) - r);
int maxY = (int) (((randomHeight)*(randomHeight)) + r);
int minY = (int) ((((randomHeight)*(randomHeight))) - r);
public int xCoordinateOfRedColor(){
if(redColor == lastColor){
if(randomWidth > maxX && < minX){
event.getX();
}
};
}
public int yCoordinateOfRedColor(){
if(redColor == lastColor){
if(randomHeight > maxY && < minY){
event.getX();
}
};
}
if(redColor == lastColor){
if(randomHeight > maxY && < minY){
event.getY();
}
};
if(greenColor == lastColor){
};
if(greenColor == lastColor){
};
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN :
randomWidth = (int) event.getX();
randomHeight = (int) event.getY();
invalidate();
break;
case MotionEvent.ACTION_POINTER_UP :
break;
}
return true;
}
}
我不知道即时消息是很近还是很远.
解决方法:
有很多方法可以解决此类问题.您可以尝试列出所有内容,让自己发疯.最强大的功能之一是在创建每个形状时为其分配唯一的颜色.使用该颜色查找形状.换一种说法…
当他们单击此按钮时:
从中取样颜色:
保持哈希表从这些唯一的颜色到形状对象引用.让所有形状在您从未放在屏幕上的隐藏位图上绘制其独特的颜色.用户单击时,在隐藏位图上的x y处查找颜色.通过哈希图运行该颜色,您可以引用它们单击的形状.现在,您不必担心重叠或什至使用与圆形不同的形状.这不仅为您提供了形状的x和y,而且还为您提供了有关该形状的所有信息.
当然,要使它起作用,您必须为形状创建自己的类.为了说明的目的,我使独特的颜色非常鲜明.实际上,您可以增加一个整数.可以通过构造函数来增加它,也可以通过工厂方法来注入它.
它足够强大,即使在渲染3D时也可以使用.只需保持可见和隐藏位图同步即可.事实证明这很容易,因为您只需重用相同的呈现代码.循环绘制每种形状,并要求其在您提交的位图上用独特的颜色进行绘制.只要没有其他会改变颜色的效果(阴影,照明,光线跟踪),该效果就可以使用.确保将其关闭.
顺便说一句,我不这样认为:
if(randomHeight > maxY && < minY){
按照您的想法去做.当我要测试两个值之间是否存在某种关系时,我使用:
if(minY <= randomHeight && randomHeight <= maxY){
因为它让我想起了3≤x≤15的数学不等式.
内容总结
以上是互联网集市为您收集整理的java-尝试获取在屏幕上绘制的每个随机圆的x,y坐标全部内容,希望文章能够帮你解决java-尝试获取在屏幕上绘制的每个随机圆的x,y坐标所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。