2010-05-26 40 views
7

Tôi đang cố gắng tạo hiệu ứng một quân cờ trong bảng. Đầu tiên tôi tạo một đối tượng java.util.Timer rằng "scheduleAtFixedRate" một TimerTask được thực hiện như một hàm proxy. Vì vậy, tôi giữ một bản ghi của các mảnh để di chuyển (mảnh di chuyển-kỷ lục) và khi nó là thích hợp (khi người dùng di chuyển các mảnh bằng cách sử dụng chuột) chức năng proxy TimerTask nên được kiểm tra nếu hồ sơ không phải là nil và thực hiện các mảnh- chức năng di chuyển. Hàm di chuyển mảnh chỉ cập nhật các tọa độ x và y của phần, theo một vector được tính toán trước. Tôi đặt một đồng hồ trên bản ghi di chuyển mảnh để khi thay đổi nó sẽ sơn lại bảng (canvas). Phương pháp sơn thử nghiệm nếu bản ghi di chuyển mảnh này không phải là không để vẽ nó.Làm cách nào để tạo hoạt ảnh bằng cách sử dụng swing và clojure?

Sự cố là hoạt ảnh không xuất hiện. Các mảnh chỉ nhảy đến số phận, mà không có sự chuyển động giữa. Có một số vấn đề với các chương trình hoạt hình ou có một cách tốt hơn để làm điều đó?

Trả lời

2

Cập nhật cho Swing thành phần cần được thực hiện trên các Chủ đề tổ chức sự kiện văn (EDT). Vì vậy, bạn nên usig một Swing Timer kể từ khi bất kỳ mã thực hiện khi các vụ cháy Timer sẽ được thực hiện trên EDT.

Tất cả những gì bạn cần làm là đặt vị trí của quân cờ và nó sẽ tự động tự động vẽ lại.

Đọc phần từ hướng dẫn Swing trên How to Use Timers để biết thêm thông tin.

+0

Bạn nói đúng, di chuyển hiện đang hoạt động nhưng vẫn không đủ mượt mà, sẽ kiểm tra bộ đếm thời gian nhiều hơn. Cảm ơn bạn đã trả lời. –

+0

Bạn ** KHÔNG ** phải sử dụng ** Đu hẹn giờ ** để tạo hoạt ảnh cho các thành phần của bạn. Bạn có thể thiết lập một bộ đếm thời gian với tiện ích * bất cứ điều gì * mà bạn muốn và sau đó truyền thực thi cho EDT với ** SwingUtilities.invokeLater ** (hoặc ** invokeAndWait **). – SkyDan

1

Swing không hoạt động tự động, không quan trọng nếu bạn có hẹn giờ hay không. Nếu bạn muốn chuyển động động, bạn cần phải di chuyển mảnh một khoảng cách tại một thời điểm và sơn lại canvas bằng mọi cử động để nó tạo ra ảo giác để nói về chuyển động.

+0

Đó chính xác là những gì tôi đang làm, khi mảnh di chuyển phương thức sơn lại được gọi thông qua chế độ xem thêm. –

0

Có bản trình diễn hoạt hình trong JDK. Nó sử dụng awt nhưng nó sẽ cung cấp cho bạn một số ý tưởng.

jdk1.6.0_20 \ demo \ applet \ Animator

1

bạn có thể sử dụng Trident thư viện: Here

+0

Nên cố gắng, clojure với swing có vẻ khó khăn với tôi. –

0

Một ý tưởng khác có thể là xem xét khung Xử lý trực quan hóa từ processing.org. Đó là một ngôn ngữ lập trình đơn giản nhưng mạnh mẽ và được tài liệu hóa tốt cho hoạt hình và trực quan hóa. API rất đơn giản và có trình bao bọc Clojure rất minh bạch tên là Rosado.

Các vấn đề liên quan