Chúng ta hãy xem tình huống bạn có một game nhập vai có phép thuật và mỗi hoạt hình chính tả có số lượng khung hình khác nhau và chúng có các yêu cầu rất khác nhau về hiệu ứng âm thanh. Giả sử rằng mỗi phép thuật chỉ có 1 hình động liên tục được liên kết với nó (trái ngược với nhiều phần mô-đun được sử dụng để tạo thành một hình ảnh động đầy đủ) trong các trò chơi Final Fantasy 16 Bit cũ.
Cách duy nhất tôi có thể nghĩ ra để đảm bảo rằng âm thanh và hình động được đồng bộ hóa là:
- Lấy số lượng khung hình của một hình ảnh động.
- Lấy thời gian giữa mỗi khung hình của hình ảnh động. (nếu là 30 khung hình / giây thì đó là 1/30 giây trên mỗi khung hình.)
- Sau đó tạo một tệp âm thanh có độ dài chính xác như hình động.
Vì vậy, điều này có nghĩa là nếu một hình ảnh động dài 5 giây, chạy ở tốc độ 30 khung hình / giây, với tổng số 150 khung hình, tệp âm thanh cũng sẽ dài 5 giây. Nếu hình động phải có âm thanh "tác động" trên khung thứ 30, điều đó có nghĩa là tệp âm thanh sẽ bao gồm âm thanh tác động ở mốc 1,0 giây.
Cuối cùng, chúng tôi bắt đầu hoạt hình và hiệu ứng âm thanh cùng một lúc và hy vọng rằng các khung và âm thanh được đồng bộ hóa.
Âm thanh này có vẻ như có thể gây ra vấn đề khi các khung hình bị bỏ qua hoặc có điều gì đó xảy ra trong khi hoạt hình và âm thanh được phát hơi quá sớm hoặc quá muộn, và sẽ làm cho âm thanh và hình ảnh động không đồng bộ. Đây có phải là cách tiếp cận tốt nhất hay thường có một cách tốt hơn mà tôi không thấy?
Câu trả lời không nhất thiết phải dành cho Cocos2D cụ thể nếu đó là khái niệm, nhưng nếu có một giải pháp cụ thể cho cocos2d, tôi rất muốn nghe.
EDIT: Tôi cũng nhận ra rằng với phương pháp này, nếu chúng ta tình cờ đi vào và điều chỉnh số lượng khung hình hoặc thời gian của hình ảnh động sau đó, chúng ta cũng phải quay lại và thay đổi tệp âm thanh. Điều này nghe có vẻ là một nguyên nhân khủng khiếp cho lỗi của con người (quên cập nhật các tệp âm thanh sau khi thay đổi hoạt hình.) Tôi hy vọng có những phương pháp tốt hơn ngoài kia.