Руководство по actionscript. часть 6, стр. 049
Листинг 28.13. Класс DisplayAssetLoader
package { import flash. display.*; import flash. events.*; import flash. net.*; import flash. text.*; import flash. utils.*;
public class DisplayAssetLoader extends Sprite { // Константа, представляющая ASCII-символ // «завершение передачи» public static const EOT:int = 4; // Объект TextField, отображаемый на экране, // в который выводятся // статусные сообщения private var statusField.-TextField;
// Объект сокета, через который будет устанавливаться соединение private var socket:Socket;
// Буфер байтов, в который по мере загрузки будут помещаться бинарные // данные элемента
private var buffer:ByteArray = new ByteArray( );
// Объект Loader, используемый для генерации элемента из загруженных
// бинарных данных
private var loader:Loader;
// Конструктор класса
public function DisplayAssetLoader ( ) {
// Создаем объект TextField для отображения статусных сообщений
statusField = new TextField( );
statusField. border = true;
statusField. background = true;
statusField. width = statusField. height = 350;
addChild(statusField);
// Создаем объект сокета socket = new Socket( );
// Регистрируем приемники для событий сокета socket. addEventLi stener(Event. CONNECT, connectListener); socket. addEventLi stener(Event. CLOSE, closeLi stener); socket. addEventLi stener(ProgressEvent. S0CKETJ3ATA,
socketDataListener); socket. addEventListener(IOErrorEvent.10 ERROR, ioErrorListener);
// Сообщаем пользователю, что сейчас мы попытаемся подключиться // к сокету
out(«Attempting connection…»);
// Пытаемся подключиться к сокету try {
socket. connectClocalhost». 3000): } catch (e:Error) { outC’Connection problem!\n»); out(e. message):
}
// Обрабатывает события подключения к сокету private function connectListener (e:Event):void { out(«Connected! Waiting for data…»);
}
// Обрабатывает вновь полученные данные private function socketDataListener (e:ProgressEvent):void { out(«New socket data arrived.»);
// Когда появляются новые байты, помещаем их в буфер для дальнейшей // обработки
socket. readBytes(buffer, buffer. length, socket. bytesAvai1able);
}
// Обрабатывает события отключения сокета. Когда происходит отключение, // пытаемся сгенерировать отображаемый элемент из загруженных байтов, private function closeListener (e:Event):void {
// Сначала проверяем, был ли получен весь элемент целиком…