質問編集履歴

2

ソースコードの補足

2017/10/26 17:50

投稿

3_pyon
3_pyon

スコア12

test CHANGED
File without changes
test CHANGED
@@ -40,9 +40,209 @@
40
40
 
41
41
  [こちらの質問](https://teratail.com/questions/96061)で示したソースコードに,教えて頂いたTimelineの処理を実装したものです.
42
42
 
43
+ ```Java
44
+
45
+ //FXTest2.fxml
46
+
47
+
48
+
49
+ <?xml version="1.0" encoding="UTF-8"?>
50
+
51
+
52
+
53
+ <?import javafx.scene.canvas.Canvas?>
54
+
55
+ <?import javafx.scene.layout.AnchorPane?>
56
+
57
+
58
+
59
+ <AnchorPane xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sim.FXTest2Controller">
60
+
61
+ <children>
62
+
63
+ <AnchorPane layoutX="-98.0" layoutY="-90.0" prefHeight="500.0" prefWidth="500.0">
64
+
65
+ <children>
66
+
67
+ <Canvas fx:id="Canvas" height="348.0" layoutX="115.0" layoutY="109.0" width="270.0" AnchorPane.leftAnchor="115.0" AnchorPane.topAnchor="109.0" />
68
+
69
+ </children>
70
+
71
+ </AnchorPane>
72
+
73
+ </children>
74
+
75
+ </AnchorPane>
76
+
77
+
78
+
79
+ ```
80
+
81
+
82
+
83
+ ```Java
84
+
85
+ //FXTest2Controller.java
86
+
87
+
88
+
89
+ package sim;
90
+
91
+
92
+
93
+
94
+
95
+ import javafx.fxml.FXML;
96
+
97
+ import javafx.fxml.Initializable;
98
+
99
+ import java.net.URL;
100
+
101
+ import java.util.ResourceBundle;
102
+
103
+ import javafx.scene.paint.Color;
104
+
105
+ import javafx.scene.canvas.GraphicsContext;
106
+
107
+ import javafx.scene.canvas.Canvas;
108
+
109
+
110
+
111
+ public class FXTest2Controller implements Initializable {
112
+
113
+ @FXML Canvas Canvas;
114
+
115
+ GraphicsContext gc;
116
+
117
+
118
+
119
+ public void initialize(URL location, ResourceBundle resources) {
120
+
121
+
122
+
123
+ gc = Canvas.getGraphicsContext2D();
124
+
125
+
126
+
43
- 座標の再計算、描画処理のメソッドの呼び出しはTimelineevent内で行っています.
127
+ Timeline timeline = new Timeline(
128
+
44
-
129
+ new KeyFrame(
130
+
45
-
131
+ Duration.millis(30)),
132
+
133
+ (event) -> {
134
+
135
+
136
+
137
+ //ここで物体の座標計算をしたとみてください
138
+
139
+
140
+
141
+ draw();
142
+
143
+ })
144
+
145
+ );
146
+
147
+ timeline.setCycleCount(Timeline.INDEFINITE); // 無限に繰り返す
148
+
149
+ timeline.start(); // 開始
150
+
151
+ }
152
+
153
+
154
+
155
+ public void draw() {
156
+
157
+
158
+
159
+ //ここで描画処理を行っています
160
+
161
+
162
+
163
+ }
164
+
165
+ }
166
+
167
+
168
+
169
+
170
+
171
+ ```
172
+
173
+
174
+
175
+ ```Java
176
+
177
+ //Main.java
178
+
179
+
180
+
181
+ package sim;
182
+
183
+
184
+
185
+ import javafx.application.Application;
186
+
187
+ import javafx.stage.Stage;
188
+
189
+ import javafx.scene.Scene;
190
+
191
+ import javafx.scene.canvas.Canvas;
192
+
193
+ import javafx.scene.canvas.GraphicsContext;
194
+
195
+ import javafx.scene.layout.AnchorPane;
196
+
197
+ import javafx.scene.paint.Color;
198
+
199
+ import javafx.fxml.FXMLLoader;
200
+
201
+ import javafx.fxml.FXML;
202
+
203
+
204
+
205
+ public class Main extends Application {
206
+
207
+
208
+
209
+ @Override
210
+
211
+ public void start(Stage primaryStage) {
212
+
213
+
214
+
215
+ try {
216
+
217
+ AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("FXTest2.fxml"));
218
+
219
+ Scene scene = new Scene(root,400,400);
220
+
221
+ scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
222
+
223
+ primaryStage.setScene(scene);
224
+
225
+ primaryStage.show();
226
+
227
+ } catch(Exception e) {
228
+
229
+ e.printStackTrace();
230
+
231
+ }
232
+
233
+ }
234
+
235
+
236
+
237
+ public static void main(String[] args) {
238
+
239
+ launch(args);
240
+
241
+ }
242
+
243
+ }
244
+
245
+ ```
46
246
 
47
247
  ###試したこと
48
248
 

1

補足

2017/10/26 17:50

投稿

3_pyon
3_pyon

スコア12

test CHANGED
File without changes
test CHANGED
@@ -40,6 +40,8 @@
40
40
 
41
41
  [こちらの質問](https://teratail.com/questions/96061)で示したソースコードに,教えて頂いたTimelineの処理を実装したものです.
42
42
 
43
+ 座標の再計算、描画処理のメソッドの呼び出しはTimelineのevent内で行っています.
44
+
43
45
 
44
46
 
45
47
  ###試したこと