Làm thế nào để lưu trữ flash (đại diện) Movieclips và sprite?


7

Khi chúng ta vẽ bất kỳ đối tượng nào trong flash và chuyển đổi nó thành Movieclip hoặc sprite, làm thế nào nó được lưu trữ hoặc thể hiện trong flash. Tôi biết trong nghệ thuật vector, nó được lưu trữ hoặc biểu diễn dưới dạng các phân đoạn dòng bằng cách sử dụng các công thức. Có cách nào để có được các đỉnh của hình đã được vẽ không?

Ví dụ: giả sử một hình chữ nhật đơn giản được vẽ và được chuyển đổi thành Movieclip. Có cách nào để có được các đỉnh và các đoạn đường từ sprite không? Vì vậy mà hình dạng của nó được thu được. Cần có đủ thông tin để hình dạng có thể được nhân rộng. Đó là chìa khóa - nhân rộng.

Nói một cách đơn giản, flash lưu trữ thông tin về hình dạng đã được vẽ ở đâu để chúng ta có thể lấy nó và cố gắng tự sao chép hình dạng?


Bạn sẽ sử dụng cái này để làm gì? Nếu chúng tôi biết những gì bạn đang cố gắng để đạt được nó sẽ dễ dàng hơn để trả lời.
Tấn

Nếu bạn muốn "sao chép" chính xác cùng một hình dạng, tại sao không chỉ cần sao chép nó hoặc tạo một thể hiện mới của nó?
bummzack

OK ... đây là những gì tôi đang cố gắng thực hiện ... Tôi đang sử dụng Box2D và tôi đặt các sprite hoặc Movieclips làm 'skin' của đối tượng Box2D. Trước đây tôi đã tạo ra một sự kết hợp của các hình dạng nguyên thủy Box2D giống với sprite nhưng nó không bao giờ thỏa đáng vì sprite không phải là hình dạng thông thường ... một số bit bị bệnh không vượt quá hình dạng box2D bên dưới. Vì vậy, tôi muốn có một cách để tái tạo hình dạng của sprite theo chương trình và tạo ra hình dạng Box2D giống với hình dạng của sprite để các va chạm trông giống như thật, sẽ không có sự trùng lặp của các sprite như trong trường hợp trước.
Astromaz3

Câu trả lời:


3

Nếu tôi diễn giải bình luận của bạn một cách chính xác, bạn muốn: Có các hình dạng tùy ý trong Flash và tự động trích xuất hình dạng của các họa tiết này để sử dụng nó làm hình dạng va chạm trong Box2d

Thông thường, hình dạng va chạm là hình dạng đơn giản hơn nhiều so với tài sản đồ họa mà chúng đại diện (hiệu suất). Một mô hình 3d rất chi tiết có thể được biểu diễn chỉ bằng một hình trụ vát.

Một số cơ thể vật lý có thể được tạo tự động bằng thuật toán, nhưng đó cũng là cách phổ biến để vẽ / mô hình chúng bằng tay. Trừ khi bạn có một số lượng lớn các hình dạng khác nhau, rất có thể không đáng để thực hiện một thuật toán trích xuất hình dạng cho bạn.

Nếu bạn nhìn vào hình ảnh sau đây, bạn có thể thấy rằng một hình dạng rất phức tạp có thể được biểu thị bằng một số hình tròn và đa giác đơn giản (phải là lồi!). Vẽ các hình này bằng tay là (rất có thể) sẽ vượt trội hơn bất kỳ thuật toán nào bạn có thể nghĩ ra.

hình dạng va chạm

Bạn có thể vẽ các hình dạng này trong một công cụ vector như Illustrator hoặc Inkscape và xuất chúng sang SVG, có thể dễ dàng phân tích cú pháp. Hoặc sử dụng Flash và xuất các hình dạng dưới dạng FXG, đây cũng là định dạng có thể dễ dàng phân tích cú pháp.

Nếu tôi chưa thuyết phục được bạn và bạn thực sự muốn lập trình tạo các hình dạng từ các họa tiết của mình, thì đây là hai cách tiếp cận có thể hiệu quả.

  1. Kết xuất sprite thành bitmap (sử dụng BitmapData.draw ) và thực hiện vector hóa trên kênh alpha. Nếu hình dạng kết quả là lõm, tam giác nó.
  2. Sử dụng thư viện as3swf để phân tích tệp SWF hiện có trong flash. Bạn có thể trích xuất thông tin hình dạng từ đó. Vấn đề chính của bạn ở đây sẽ là: Tìm (các) hình dạng tạo thành đường viền của đối tượng của bạn. Chuyển đổi hình dạng này thành đa giác lồi.

3

"Flash" lưu trữ tất cả thông tin của phim hoặc trò chơi điện tử thành một định dạng riêng. Dữ liệu được lưu trữ theo định dạng véc tơ, đây là định dạng có định nghĩa toán học. Đây là sự khác biệt chính với bitmap, bởi vì bạn có thể chia tỷ lệ hình ảnh mà không mất dữ liệu.

Bạn có thể truy cập vào tệp .swf, đây là thông số kỹ thuật http://www.adobe.com/devnet/swf.html và phân tích các Movieclips, hình dạng, tọa độ, v.v. Vì định dạng .swf rất lớn bạn có thể sử dụng mã của dự án SWFRIP tại http://sourceforge.net/projects/swfrip/ và xem cách bạn có thể phân tích một tệp .swf.

Với một chút kiên nhẫn bạn có thể có được dữ liệu mà bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.