日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

javafx 动画没效果_通过JavaFX标注制作动画效果

發布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javafx 动画没效果_通过JavaFX标注制作动画效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javafx 動畫沒效果

在本文中,您將學習如何使用JavaFX的動畫API創建標注。 您可以在https://www.youtube.com/watch?v=XTHbB0LRdT4的 YouTube網站上查看這些標注的演示示例。

什么是標注?

我敢肯定,您已經看過廣告或科幻電影,它們使用在圖像頂部顯示的標注來指示場景中的物體。 在本文中,您將學習如何使用JavaFX的Animation API創建動畫標注效果。 使用這種效果,您可以將文本放置到場景中,然后通過線條或箭頭將文本連接到感興趣的項目。

圖1顯示了在本文的上下文中組合在一起構成標注的各個部分。

圖1.典型標注的不同部分

以下是圖1中所示各個部分的定義:

  • 頭部 –指示圖像中的項目的點(圓圈)
  • 引導線 –從頭部到另一點的線,通常形成對角線
  • 引伸線末端引伸線段的末端 (水平線)
  • 主標題 –主標題文本。 正文開始在引導線的終點滾動
  • 字幕矩形 –來自主標題底部的一個小動畫矩形
  • 字幕 - 字幕文字。 字幕文本將在主標題文本下方

并非所有標注都相同。 不過,大多數將包含這些元素。

標注通常以靜態方式指出書籍或雜志中的內容,但如果可以對標注進行動畫處理,則視頻中的標注要好得多。 一個不錯的動畫效果是從繪制一個點(頭)開始,然后畫一條線(引導線),然后滾動一個主要標題,最后滾動一個字幕。 當動畫結束顯示時,它可以暫停一會兒(恰好足以允許觀看者閱讀標題文本),然后將整個過程反向進行,以退出場景。

動畫標注

現在您知道了標注的構成,我們可以跳入一些JavaFX代碼來為圖1中所示的每個片段(1-6)設置動畫。

由于每個標注都是按順序進行動畫處理的,因此您將首先創建一個javafx.animation.SequentialTransition實例。 一個SequentialTransition擁有零到許多動畫對象。 創建方法如下:

SequentialTransition calloutAnimation = new SequentialTransition();

顧名思義,動畫將按順序進行。 您還需要在calloutAnimation上設置的其他內容是循環計數和自動反轉屬性。 例如:

// Allow animation to go in reversecalloutAnimation.setCycleCount(2);calloutAnimation.setAutoReverse(true);

在閱讀器有時間查看和吸收標注之后,上述設置使動畫可以反轉順序。 若要添加動畫,請在順序過渡動畫對象上調用.getChildren()。add()方法。 以下是將頭部動畫添加到順序過渡動畫對象的代碼。 方法buildHeadAnim()返回一個javafx.animation.Animation實例。

// Animation of headCircle head = new Circle(600, 550, 5); // center x, y, radiushead.setFill(Color.WHITE);calloutAnimation.getChildren().add(buildHeadAnim(head));

頭部動畫

為頭部創建動畫時,可以使用任何形狀,例如矩形或圓形。 在接下來的示例中,頭部是JavaFX Circle形狀。 動畫從零半徑開始,然后縮放到更大的半徑。 所示方法創建并返回一個javafx.animation.Timeline對象。

protected Animation buildHeadAnim(Node head) {Circle headCircle = (Circle) head;return new Timeline(new KeyFrame(Duration.millis(1),new KeyValue(headCircle.visibleProperty(), true),new KeyValue(headCircle.radiusProperty(), 0)), // start valuenew KeyFrame(Duration.millis(300),new KeyValue(headCircle.radiusProperty(), 5.0d)) // end value); }

時間軸由初始關鍵幀組成,該初始關鍵幀將頭圈的visible屬性設置為true,并將radius屬性設置為零。 接下來,使用關鍵值定義結束關鍵幀,以在300毫秒內將radius屬性從零插入到5.0。

領導線動畫

在設置引導線動畫時,該線將看起來就像是用鉛筆進行描畫或繪制。 在下面的代碼中,將對端點坐標進行插值(線性)。 從頭部的中心(600,550)到lineToPoint坐標(400,300)畫一條線。 我對值進行了硬編碼,以使代碼更簡潔。 endX / endY的實際鍵值分別設置為getLeaderLineToPoint()。getX()getLeaderLineToPoint()。getY()

protected Animation buildBeginLeaderLineAnim(Line leaderLine) {return new Timeline(new KeyFrame(Duration.millis(1),new KeyValue(leaderLine.visibleProperty(), true)),// shownew KeyFrame(Duration.millis(300),new KeyValue(leaderLine.endXProperty(), 400),new KeyValue(firstLeaderLine.endYProperty(), 300))); }

領導線結束動畫

由于動畫引導線末端的代碼將與以前的動畫非常相似,因此,我將省略該代碼。 要查看完整列表,請訪問: https : //github.com/carldea/callouts/tree/master/src/com/carlfx/callouts 。

主標題文字動畫

主標題文本動畫由一個HBox組成,該HBox包含一個Text節點,該節點將根據引出線終點的方向向左或向右滾動。 例如,如果引出線終點的方向指向右側,則主標題文本將顯示為向右滾動。

下面是buildMainTitleAnim()方法,用于對主標題文本進行動畫處理。 由于該方法是標注動畫中最復雜的部分,因此我想分享我在使用過程中遇到的一些技巧。

protected Animation buildMainTitleAnim(HBox mainTitleBackground) {// main title box// Calculate main title width and height upfrontRectangle2D mainTitleBounds = getBoundsUpfront(mainTitleBackground);double mainTitleWidth = mainTitleBounds.getWidth();double mainTitleHeight = mainTitleBounds.getHeight();// Position mainTitleText background beside the end part of the leader line.Point2D endPointLLine = calcEndPointOfLeaderLine();double x = endPointLLine.getX();double y = endPointLLine.getY();// Viewport to make main title appear to scrollRectangle mainTitleViewPort = new Rectangle();mainTitleViewPort.setWidth(0);mainTitleViewPort.setHeight(mainTitleHeight);mainTitleBackground.setClip(mainTitleViewPort);mainTitleBackground.setLayoutX(x);mainTitleBackground.setLayoutY(y - (mainTitleHeight/2));// Animate main title from end point to the left.if (LEFT == getEndLeaderLineDirection()) {// animate layout x and widthreturn new Timeline(new KeyFrame(Duration.millis(1),new KeyValue(mainTitleBackground.visibleProperty(), true),new KeyValue(mainTitleBackground.layoutXProperty(), x)), // shownew KeyFrame(Duration.millis(200),new KeyValue(mainTitleBackground.layoutXProperty(), x - mainTitleWidth),new KeyValue(mainTitleViewPort.widthProperty(), mainTitleWidth)));}// Animate main title from end point to the rightreturn new Timeline(new KeyFrame(Duration.millis(1),new KeyValue(mainTitleBackground.visibleProperty(), true)), // shownew KeyFrame(Duration.millis(200),new KeyValue(mainTitleViewPort.widthProperty(), mainTitleWidth))); }

放置主標題文本時,您的代碼將需要預先知道邊界區域的大小。 下面是一種方法,該方法采用包含文本節點的HBox,然后計算HBox的寬度和高度,而不必在主場景圖上顯示該框。

protected Rectangle2D getBoundsUpfront(Region node) {// Calculate main title width and heightGroup titleRoot = new Group();new Scene(titleRoot);titleRoot.getChildren().add(node);titleRoot.applyCss();titleRoot.layout();return new Rectangle2D(0, 0, node.getWidth(), node.getHeight()); }

您可以在此示例中看到javafx.scene.Node類中的applyCss()layout()方法如何負責在應用CSS樣式后確定寬度和高度。 在上方,您會發現一個場景是臨時創建的。

字幕動畫

為簡便起見,我省略了字幕動畫。 我相信您會看到我在Github上提到的完整代碼清單。 就動畫的初始開始和內插到結束鍵值而言,所有字幕動畫均遵循與標題動畫相同的模式。

播放標注動畫

假設將構成標注的節點添加到JavaFX Pane布局節點,則需要停止順序動畫calloutAnimation 。 然后,您需要初始化所有不顯示的節點(visible屬性設置為false)。 最后,您需要調用play()方法。

getChildren().addAll(head,firstLeaderLine,secondLeaderLine,mainTitle,subTitleRect,subTitle);calloutAnimation.stop();getChildren().forEach(node -> node.setVisible(false));calloutAnimation.play();

結論

通過使用JavaFX的動畫API和簡單的形狀,創建動畫標注非常容易。 在本文中,您學習了如何使用SequentialTransition對象來順序調用較小的動畫(時間軸)。

構建每個時間軸動畫的標注的每個步驟,將使用根據形狀屬性(例如圓的半徑)在關鍵值上插值的關鍵幀。 之后,在學習如何對引導線進行動畫處理之后,您還學到了一個巧妙的技巧,可以通過applyCss()layout()方法幫助確定主標題文本的大小。 由于樣式和字體大小的原因,在將UI組件呈現到主場景圖上之前,很難知道它的大小。

現在,您知道如何實現動畫標注,我相信您將使應用程序更具吸引力。 編碼愉快!

翻譯自: https://www.javacodegeeks.com/2018/10/animated-effects-javafx-callouts.html

javafx 動畫沒效果

總結

以上是生活随笔為你收集整理的javafx 动画没效果_通过JavaFX标注制作动画效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 另类ts人妖一区二区三区 | 粗大挺进潘金莲身体在线播放 | 欧美伦理一区二区三区 | 免费成人电影在线观看 | 青青草婷婷 | 欧美综合专区 | 亚洲精品天堂在线 | 日本视频免费观看 | 亚洲一区欧美日韩 | 香港三级网站 | 国产专区一区 | 91久久久久久久久久 | 水蜜桃av在线 | 免费看91视频 | 国产亚洲欧美日韩高清 | 日韩av自拍偷拍 | 老鸭窝av在线 | xvideos永久免费入口 | 91不卡视频 | av色在线观看| 欧美日韩操 | 久久综合丁香 | 欧美一级精品 | 93久久精品日日躁夜夜躁欧美 | 已婚少妇美妙人妻系列 | 韩国三级hd中文字幕 | 国产免费色视频 | 欧美在线观看一区二区三区 | 成人在线看片 | 美日韩一区二区 | 青青青青青青青青草 | 午夜免费福利小电影 | 国产精品av网站 | 午夜精品一区二区三 | 99午夜| 天堂va蜜桃一区二区三区 | 日本一本二本三区免费 | 最近中文字幕mv免费高清在线 | 欧美久久精品一级黑人c片 1000部多毛熟女毛茸茸 | 亚洲av无码一区二区乱子伦 | 色哟哟免费 | japanese强行粗暴 | 国产精品一区二区三区线羞羞网站 | 一区二区三区 欧美 | 色综合五月天 | 视频一区二区三区精品 | 图片区小说区视频区 | 国产精品888 | 北条麻妃一区二区三区 | www.好了av | 三级黄色视屏 | 日韩免费在线播放 | 黄色特级大片 | 美女网站全黄 | 国产精品一区二区av白丝下载 | 精品久久久久久久久久久久久久久久久久 | 亚天堂| 日韩免费在线观看 | 人人亚洲 | 国产情侣第一页 | 爆乳熟妇一区二区三区 | 亚洲成熟少妇视频在线观看 | 国产av第一区 | 日韩成人av免费在线观看 | 国产精品二区一区二区aⅴ污介绍 | 日韩视频网站在线观看 | 爆乳2把你榨干哦ova在线观看 | 麻豆免费观看视频 | 日韩精品――中文字幕 | 亚洲 小说 欧美 激情 另类 | 亚洲自拍在线观看 | 欧美不卡视频 | 一级黄色大片网站 | 日韩精品久久一区二区 | 人人爱人人搞 | 精品国产aⅴ一区二区三区四川人 | 色久影院 | 久久午夜精品 | 亚洲短视频 | www在线看| 少妇人妻一区二区 | 欧美激情国产一区 | 国产传媒第一页 | 奇米第四色首页 | 亚洲精品综合精品自拍 | 亚洲视频在线一区二区 | 麻豆极品 | 无人码人妻一区二区三区免费 | 97超碰人人模人人人爽人人爱 | 欧美综合一区 | 九九激情网 | 国产精品久久久久影院老司 | 欧美日韩女优 | 风间由美在线观看 | 国产一区二区三区久久久 | 久久久噜噜噜久久久 | 国产浮力第一页 | 亚洲三级伦理 | 91精品影视 |