Tôi có ứng dụng vẽ và tôi muốn người dùng của mình có thể sử dụng hiệu ứng hạt như một phần của bản vẽ. Về cơ bản, điểm của ứng dụng là thực hiện vẽ tùy chỉnh và lưu vào Camera Roll hoặc chia sẻ trên World Wide Web.CAEmitterLayer không hiển thị khi -renderInContext: của siêu lớp được gọi là
Tôi đã truy cập vào lớp học CAEmitterLayer
gần đây, mà tôi cho là một cách đơn giản và hiệu quả để thêm hiệu ứng hạt.
Tôi đã có thể vẽ các hạt trên màn hình trong ứng dụng bằng cách thực hiện CAEmitterLayer
. Vì vậy, hiển thị trên màn hình hoạt động tốt.
Khi tôi đi về render các nội dung của bản vẽ sử dụng
CGContextRef context = UIGraphicsBeginImageContextWithSize(self.bounds.size);
// The instance drawingView has a CAEmitterLayer instance in its layer/view hierarchy
[drawingView.layer renderInContext:context];
//Note: I have also tried using the layer.presentationLayer and still nada
....
//Get the image from the current image context here for saving to Camera Roll or sharing
....the particles are never rendered in the image.
Những gì tôi nghĩ đang xảy ra
Các CAEmitterLayer
là trong trạng thái liên tục của "hiệu ứng động" các hạt. Đó là lý do tại sao khi tôi cố gắng hiển thị lớp (tôi cũng đã thử hiển thị layers.presentationLayer
và modelLayer), hoạt ảnh không bao giờ được cam kết và do đó việc hiển thị hình ảnh màn hình tắt không chứa các hạt.
Câu hỏi Có ai đã hiển thị nội dung của màn hình ngoài CAEmitterLayer
không? Nếu vậy, làm thế nào bạn làm điều đó?
Câu hỏi thay thế Có ai biết về bất kỳ thư viện hệ thống hiệu ứng hạt nào không sử dụng OpenGL và không phải là Cocos2D không?
Có may mắn với điều này không? –
Không, xem Revis trả lời dưới đây. CAEmitterLayer không thể gọi renderInContext: – micksabox