如何在JavaFX中为两个节点之间的2D曲线箭头设置动画
在我的项目中,我正在处理SVGPaths(从Shape类扩展而来),此外,我还试图改进自己在JavaFX中的动画。问题是,我想在两个节点之间创建2D弯曲箭头动画。在这里,您可以看到我的地图示例,其中包括国家(换句话说,节点/形状),以便您更清楚地了解如何在JavaFX中为两个节点之间的2D曲线箭头设置动画,java,animation,javafx-2,shape,java-2d,Java,Animation,Javafx 2,Shape,Java 2d,在我的项目中,我正在处理SVGPaths(从Shape类扩展而来),此外,我还试图改进自己在JavaFX中的动画。问题是,我想在两个节点之间创建2D弯曲箭头动画。在这里,您可以看到我的地图示例,其中包括国家(换句话说,节点/形状),以便您更清楚地了解 所以,考虑到每当鼠标光标在节点上时,2D箭头就会启动动画指向邻居国家。箭头看起来像这样 我研究了互联网,阅读了一些关于JavaFX动画的教程,但找不到清晰的东西。无论如何,我会感谢你的每一个回答和感谢 编辑:最后我实现了一个关于在两个矩形的中点
所以,考虑到每当鼠标光标在节点上时,2D箭头就会启动动画指向邻居国家。箭头看起来像这样
我研究了互联网,阅读了一些关于JavaFX动画的教程,但找不到清晰的东西。无论如何,我会感谢你的每一个回答和感谢 编辑:最后我实现了一个关于在两个矩形的中点之间旋转箭头的适当动画。这里是简单的源代码Rectangle rect1 = new Rectangle(71, 64, 31, 21); // Create first rectangle
Rectangle rect2 = new Rectangle(158, 64, 35, 21); // Create second rectangle
rect1.setVisible(false);
rect2.setVisible(false);
worldMap.getChildren().add(rect1); // add both of them in to the Group Layout
worldMap.getChildren().add(rect2);
Path path = new Path(); // Create the oath object which arrow will rotate on
MoveTo moveTo = new MoveTo();
moveTo.setX( rect1.getX()+ (rect1.getWidth()/2) );
moveTo.setY( rect1.getY()+ (rect1.getHeight()/2) );
QuadCurveTo quadCurveTo = new QuadCurveTo();
quadCurveTo.setX( rect2.getX()+(rect2.getWidth()/2) );
quadCurveTo.setY( rect2.getY()+(rect2.getHeight()/2) );
quadCurveTo.setControlX( ( rect1.getX()+rect2.getX() ) /2 );
quadCurveTo.setControlY( ( rect1.getY()-50) );
path.getElements().add(moveTo);
path.getElements().add(quadCurveTo);
path.setStrokeWidth(3);
path.setStroke(Color.BLACK);
path.setMouseTransparent(true);
final Polygon arrow = new Polygon(); // Create arrow
arrow.getPoints().addAll(new Double[] {50.0,50.0,70.0,50.0,70.0,42.0,82.0,54.0,70.0,66.0,70.0,58.0,50.0,58.0});
arrow.setFill(Color.GREEN);
PathTransition pathTransition = new PathTransition(); //
pathTransition.setDuration(Duration.millis(750));
pathTransition.setPath(path);
pathTransition.setNode(arrow);
pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
pathTransition.setCycleCount(Timeline.INDEFINITE);
pathTransition.setAutoReverse(true);
pathTransition.play();
现在我想创建一个动画,它提供箭头从起点开始延伸到终点。JavaFX2D/3D非常适合使用JDK 8 阅读中的示例 下载的jkd8包括3D
请不要把我的评论误认为是“拖拉”——是什么让你决定在这个项目中使用JavaFX?早在08年JavaOne发布之后,我就很少听到关于它的消息(是09年吗?)。你是在做网络还是机顶盒(Java TV)项目?不是。事实上,我正在执行一个棋盘游戏,我们称之为“风险”,也许你听说过。在开始人工智能部分之前,我开始实现用户界面部分。我使用一个SVG文件来实现从.fxml文件解析的世界地图。因此.fxml和svg文件就是我开始用JavaFX编写这个游戏的原因。JavaFX可以以本机方式显示动画GIF(如在您的问题帖子中)-
ImageView-ImageView=new-ImageView(new-Image(“http://i.stack.imgur.com/cVtz0.gif"));
,或者您可能正在使用请求一些不同的内容?我已经在JFX中查看了可用动画的列表,似乎您必须更改您的想法=)我建议创建一个移动箭头。箭头从开始到结束。一次又一次。这将是一个路径转换。可能是沿着这条线的几个箭头。。。或者一支箭,从起点跳到终点它的工作原理是:创建一个动画,并使节点可见,只有当鼠标位于上方时才可见。@sea基本上,我考虑过这种方法,但我认为它看起来可能有点业余:D。而且每个节点的角度也会有所不同。有没有办法调整这个.gif文件的大小(在角度上播放)?遗憾的是,完整的JDK 8版本要到2014年才会发布(它被推迟到2013年9月的初始日期后的6个月)