Показать сообщение отдельно
Старый 20.08.2011, 19:24
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 3  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
Дело в том, что я использую метод
Код AS3:
_fileStream.openAsync(...)
вместо
Код AS3:
_fileStream.open(...)
Это для того, что бы гарантированно знать что чтение было окончено (сработает подписка на событие _fileStream.addEventListener(Event.COMPLETE, this.evFileLoadingCompleteHandler))

И, в данном случае, если
Код AS3:
_fileStream.position = _fileHandler.size / 2; // начать чтение с середины файла;
начинаются проблемы!

Увидеть в чем проблема мы сможем, если в конструктор добавим setInterval(getBuffLength, 1);

Код AS3:
public function getBuffLength():void {
 trace(_fileStream.bytesAvailable);
}
то увидим что чтение файла начинается вовсе не с позиции _fileStream.position, а с самого начала файла. То есть - мы уверенно скармливаем оперативной памяти 4 гигабайта данных!!!!

А при чтении данных через _fileStream.open() мы не имеем возможности получать какие то события о том, что чтение данных успешно завершено (Event.COMPLETE)!!!

Вот они подводные камни!!!!