Tôi đã cố gắng sử dụng "ExternalInterface.call()" để gọi hàm javascript trả về nội dung của canvas. Tuy nhiên, đối với một canvas tương đối nhỏ (256x256) thì điều này cực kỳ chậm (khoảng 2 giây), dường như là do sự sắp xếp của các đối số/giá trị trả về.Làm cách nào để nhập nội dung của canvas html5 vào flash một cách hiệu quả?
Ngay cả khi tôi chia nhỏ dữ liệu canvas thành các đoạn nhỏ hơn, theo đề xuất của Brad Neuberg trong một bài đăng cũ hơn (từ năm 2006): http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html, tôi vẫn nhận được hiệu suất kém. Kích thước của khối không phải là một vấn đề như của Flash 9 anyway.
Tôi đoán tôi vẫn có thể cố gắng ghi đè lên các chức năng javascript Flash thực hiện việc sắp xếp/đánh giá các tham số, nhưng điều này dường như rất có liên quan và tôi muốn biết nếu tôi thiếu bất kỳ điều gì đơn giản hơn trước khi thử.
Tôi cũng đã cố gắng một cách cũ để giao tiếp flash và javascript bằng cách thực hiện:
var req : URLRequest = new URLRequest("javascript:getImage()");
var loader : Loader = new Loader();
loader.load(req);
nơi "getImage()" là một hàm javascript trả về nội dung của bức tranh như một hình ảnh. Nhưng điều này sẽ ném một số loại lỗi vi phạm bảo mật vì không có tập lệnh trình duyệt nào được phép sử dụng làm URL mục tiêu, trừ khi người dùng sử dụng "navigationToURL()" trái ngược với hàm "Loader.load()". Thật không may trước đây không trả về một giá trị.
Tôi cũng đã nhìn thấy một số mã lớn tuổi sử dụng lớp "com.macromedia.javascript.JavaScriptProxy", nhưng tôi đã không kiểm tra nó và nó dường như không có sẵn trong Flash 11.
Bất kỳ suy nghĩ sẽ được đánh giá cao. Cảm ơn!
Một thời gian trước, tôi đã viết [flashcam] (http://code.google.com/p/flashcam/) để quay video webcam trên Flash và vẽ nó sau trên canvas HTML5 bằng JavaScript. Sau một số thử nghiệm, cuối cùng tôi sử dụng một lược đồ phức tạp bit với một chuỗi các giá trị phân tách bằng dấu phẩy được phân tách bằng cách sử dụng cơ số 36. Kiểm tra mã, không được quá khó đảo ngược quá trình. –
@JuanMellado, Cảm ơn bạn đã gợi ý. Chắc chắn, cách thức mà bạn mã hóa dữ liệu hình ảnh tạo ra một sự khác biệt rất lớn, và chuỗi là cách để đi vì cuối cùng mọi thứ đều được truyền theo định dạng XML. Tôi đã kết thúc bằng cách sử dụng một nén PNG + Base64 mã hóa có thể được thực hiện rất hiệu quả thông qua chức năng canvas 'canvas.toDataURL ('image/png')'. Điều này cải thiện hiệu suất của một số đơn đặt hàng của cường độ so với truyền dữ liệu hình ảnh như là một mảng pixel hoặc byte, trong đó bao gồm một cuộc gọi __flash__toXML() cho mỗi pixel ở phía khách hàng. Có lẽ tôi nên đăng bài này như một câu trả lời, không chắc chắn, tôi mới đến SO. – elyuro
Tuyệt vời. Và vâng, trả lời câu hỏi của riêng bạn sau đó. –