把鼠標的x和y放一個隊列里,限定隊列長度,每次都把隊列里的點畫出來就行了。
阿勒泰網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
lz 你好
我做了一個比較簡單的雛形
綠色正方形水平隨機運動
藍色正方形垂直隨機運動
import?java.awt.*;
import?javax.swing.*;
import?java.awt.event.*;
import?java.math.*;
public?class?MoveRect?extends?Frame?implements?Runnable{
private?Rectangle?hRect,?vRect;
private?Image?buffer;
private?Object?o?=?new?Object();
public?MoveRect(){
super("MoveRect");
hRect?=?new?Rectangle(50,0,50,50);//水平隨機運動的正方形
vRect?=?new?Rectangle(0,50,50,50);//垂直隨機運動的正方形
setUndecorated(true);??
setLocation(500,200);
setSize(400,400);
setVisible(true);
addWindowListener(new?WindowAdapter(){
public?void?windowClosing(WindowEvent?e){
System.exit(0);
}
});
}
//啟動循環(huán)繪制(使正方形一直循環(huán)的運動)
public?void?circleDraw(){
}
//繪制正方形的狀態(tài)
public?void?drawRect(Graphics?g,Rectangle?r){
g.drawRect(r.x,?r.y,?r.width,?r.height);
}
//雙緩沖機制(主要解決閃屏)
public?void?update(Graphics?g){
buffer?=?createImage(getSize().width,?getSize().height);
if(buffer?!=?null){??????????
Graphics?g2?=?buffer.getGraphics();
paint(g2);
g2.dispose();??????
g.drawImage(buffer,?0,?0,?this);????????
}
else{
paint(g);
}
}
public?void?paint(Graphics?g){??????
g.setColor(Color.GREEN);
drawRect(g,hRect);
g.setColor(Color.BLUE);
drawRect(g,vRect);
hRect.x?=?(int)(Math.random()*351);
vRect.y?=?(int)(Math.random()*351);??
}
public?void?run(){
while(true){
stop();
rePaint();
}??????????????
}
//同步方法rePaint
public?synchronized?void?rePaint(){
repaint();
}
//同步方法stop
public?synchronized?void?stop(){
if(hRect.x?=?50??vRect.y?=?50){
try?{
Thread.sleep(500);
}
catch?(Exception?ex)?{
ex.printStackTrace();
}
}??????
}
public?static?void?main(String[]?args){????
new?Thread(new?MoveRect()).start();
}
}
圖片的位移(下落),可以通過修改圖片的x,y坐標來實現(xiàn), 在Swing/Html中,我們可以使用Timer定時(比如每隔100毫秒)去修改圖片的x,y坐標即可實現(xiàn),
多個圖片都按照一定的軌跡移動,那都按照自己的軌跡的算法,去定時修改x,y坐標即可.
JavaFX是java先進的圖形界面框架, 里面有3D和各種動畫, 所以按照軌跡移動,都能輕松實現(xiàn)
JavaFX參考代碼如下
import?javafx.animation.Animation;
import?javafx.animation.Interpolator;
import?javafx.animation.PathTransition;
import?javafx.animation.RotateTransition;
import?javafx.application.Application;
import?javafx.geometry.Insets;
import?javafx.scene.Group;
import?javafx.scene.Scene;
import?javafx.scene.control.Button;
import?javafx.scene.image.ImageView;
import?javafx.scene.layout.HBox;
import?javafx.scene.shape.MoveTo;
import?javafx.scene.shape.Path;
import?javafx.scene.shape.QuadCurveTo;
import?javafx.stage.Stage;
import?javafx.util.Duration;
public?class?PathAnimateDemo?extends?Application?{
public?static?void?main(String[]?args)?{
launch(args);
}
@Override
public?void?start(Stage?primaryStage)?throws?Exception?{
ImageView?imv=new?ImageView(getClass().getResource("ball.png").toExternalForm());
Path?path?=?new?Path();//?路徑;運動軌跡
MoveTo?mt?=?new?MoveTo(20,?50);
QuadCurveTo?quadTo2?=?new?QuadCurveTo(175,?190,?350,?30);
path.getElements().addAll(mt,?quadTo2);
HBox?hbox?=?new?HBox(10);
Button?btnStart?=?new?Button("開始");
Button?btnPause?=?new?Button("暫停");
Button?btnResume?=?new?Button("繼續(xù)");
Button?btnStop?=?new?Button("結(jié)束");
hbox.getChildren().addAll(btnStart,?btnPause,?btnResume,?btnStop);
hbox.setPadding(new?Insets(20));
hbox.setLayoutX(80);
hbox.setLayoutY(230);
Group?root?=?new?Group();
root.getChildren().addAll(imv,?path,?hbox);?//?不添加path.就可以不顯示path了
Scene?scene?=?new?Scene(root,?430,?300);
primaryStage.setTitle("JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
//旋轉(zhuǎn)動畫設(shè)置
RotateTransition?rt=new?RotateTransition(Duration.millis(1000),imv);
rt.setInterpolator(Interpolator.LINEAR);
rt.setFromAngle(0);
rt.setToAngle(360);
rt.setCycleCount(Animation.INDEFINITE);
rt.play();
//路徑動畫設(shè)置
PathTransition?pt?=?new?PathTransition(Duration.millis(800),?path,?imv);//?路徑動畫
pt.setCycleCount(Animation.INDEFINITE);
pt.setAutoReverse(true);
btnStart.setOnAction(e?-?{
pt.playFromStart();//?從頭開始播放
});
//----按鈕的響應(yīng)設(shè)置---
btnPause.setOnAction(e?-?{
pt.pause();
});
btnResume.setOnAction(e?-?{
pt.play();?//?播放
});
btnStop.setOnAction(e?-?{
pt.jumpTo(new?Duration(0));//?跳到第0秒處
pt.stop();
});
}
}
文章標題:愛心軌跡Java代碼 java編程愛心如何編
新聞來源:http://muchs.cn/article46/doeiceg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站維護、建站公司、移動網(wǎng)站建設(shè)、微信公眾號、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)