Vì một số lý do, khi tôi cố gắng nhận một thuộc tính được chia sẻ từ một số Worker
(trong AS3), kết quả luôn là rỗng. Tức là, tôi gửi một giá trị cho một số Worker
sử dụng setSharedProperty()
, khi tôi truy xuất giá trị đó bằng cách sử dụng getSharedProperty()
, giá trị này luôn trả về undefined
/null
.Công nhân bị vô hiệu khi truy xuất thuộc tính được chia sẻ
Dưới đây là một thử nghiệm đơn giản để tôi thiết lập:
package
{
import flash.display.Sprite;
import flash.system.Worker;
import flash.system.WorkerDomain;
public class Main extends Sprite
{
private var _worker:Worker;
public function Main():void
{
if (Worker.current.isPrimordial)
{
initMain();
}
else
{
initWorker();
}
}
private function initMain():void
{
_worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes);
_worker.setSharedProperty("message", "test");
_worker.start();
}
private function initWorker():void
{
_worker = Worker.current;
var message:String = _worker.getSharedProperty("message");
trace(message);
}
}
}
Khi tôi theo dõi message
, kết quả là null. Mặc dù mục tiêu chính của tôi là tạo một ứng dụng AIR, tôi nhận được kết quả tương tự cho dù tôi đang biên soạn AIR (3.7) hoặc Flash Player (11.6, vì một lý do nào đó mà 11.7 không nhận ra flash.system.Worker là một lớp hợp lệ) .
Tôi đang biên soạn bằng Flex SDK, thông qua FlashDevelop. Có ai biết những gì sai, có lẽ tôi đã bỏ lỡ một cái gì đó trong mã của tôi?
Tôi không có câu trả lời cho bạn vấn đề ain, nhưng vấn đề với Flash 11.7 không nhận ra các lớp học có thể là do playerglobal.SWC của bạn hoặc phiên bản SWF đang được biên dịch. Phiên bản SWF hiện tại có vẻ là 19, bạn có thể cần phải chỉ định phiên bản có chức năng 'Worker'. –
Ah, cảm ơn vì điều đó. Sau khi cập nhật FlashDevelop (mà cũng cập nhật các Flex và AIR SDK), nó bây giờ biên dịch cho 11,7. Tuy nhiên, vấn đề chính vẫn tồn tại. – puggsoy
Thêm 'dấu vết (_worker.getSharedProperty (" message "))' ngay sau '_worker.setSharedProperty (" message "," test ")'. Bạn có được tài sản sau đó không? Nếu không, thậm chí không cần phải thảo luận về hàm 'initWorker', vì chúng ta có thể xác định được vấn đề bắt đầu trước đó. –