java - 在 JavaFX 中获取图像/变换/形状以旋转以跟随鼠标光标

标签 java javafx rotation cursor mouse

我尝试这样做,但在某些位置,该对象(在本例中为我的 ImageView) ,只会“传送”到另一个程度。

如何才能使其不出现断断续续并在 JavaFX 场景中正确跟随鼠标光标?

最佳答案

我最近在一篇关于 how to create a heat seeking missile 的博客文章中做到了这一点.

与您相关的部分是以下代码片段:

public void move() {  

 SpriteBase follower = this;  

 if( target != null)  
 {  
  //get distance between follower and target  
  double distanceX = target.getCenterX() - follower.getCenterX();  
  double distanceY = target.getCenterY() - follower.getCenterY();  

  //get total distance as one number  
  double distanceTotal = Math.sqrt(distanceX * distanceX + distanceY * distanceY);  

  //calculate how much to move  
  double moveDistanceX = this.turnRate * distanceX / distanceTotal;  
  double moveDistanceY = this.turnRate * distanceY / distanceTotal;  

  //increase current speed  
  follower.dx += moveDistanceX;  
  follower.dy += moveDistanceY;  

  //get total move distance  
  double totalmove = Math.sqrt(follower.dx * follower.dx + follower.dy * follower.dy);  

  //apply easing  
  follower.dx = missileSpeed * follower.dx/totalmove;  
  follower.dy = missileSpeed * follower.dy/totalmove;  

 }   

 //move follower  
 follower.x += follower.dx;  
 follower.y += follower.dy;  

 //rotate follower toward target  
 double angle = Math.atan2(follower.dy, follower.dx);  
 double degrees = Math.toDegrees(angle) + 90;  

 follower.r = degrees;  

}  

跟随者是你的对象,目标是鼠标光标。您可以使用 Point2D 的 Java 8 功能来计算距离,这将使代码更少。出于与 Java 7 的兼容性原因,我没有这样做。

如果这对您有帮助,请告诉我。如果这不是您要找的内容,请说得更准确。

关于java - 在 JavaFX 中获取图像/变换/形状以旋转以跟随鼠标光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29180676/

相关文章:

ios - 崩溃: constraint is nil in viewController2 while rotating on viewController1

java - 安卓/java : String url does not work in HttpGet(url)

java - 查找整数数组中给定数字之和的最小集合

Java/Bukkit 插件 & Fat Jar : ClassNotFoundError

javafx - TableView中的JavaFX属性

java - 在 JavaFx ImageView 上添加一个位置

资源文件夹中的 JavaFX 图像

Android:旋转大图像崩溃而不会抛出错误

Java作业。 boolean 逻辑有问题

java - 红黑树 - 如果根是祖 parent ,如何轮换?