![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Проблема. Есть код:
holder_mc.createEmptyMovieClip("img_mc",0); holder_mc.img_mc.loadMovie("some.jpg"); _timer = setInterval(this,"_timefunc",50,getTimer()); this._timefunc = function() { var loadedBytes:Number = holder_mc.img_mc.getBytesLoaded(); var totalBytes:Number = holder_mc.img_mc.getBytesTotal(); if ((totalBytes > 4) && (loadedBytes == totalBytes)) { clearInterval(_timer); //что-то делаем с загруженным trace(holder_mc.img_mc._width); } } Почему-то при (loadedBytes == totalBytes) ширина и высота загруженного некоторое время равны нулю (мдя,суперская фраза ). Такое впечатление, что loadedBytes == totalBytes не является достаточным признаком того, что картинка загрузилась, приходится вводить проверку еще и на (holder_mc.img_mc._width>0 && holder_mc.img_mc._height>0) Где косяк? |
|
|||||
|
ну и смотри только _width (что тебе loadedBytes == totalBytes), раз грузишь в создаваемый мувик, а смотришь сетинтервалом..
хотя есть и нормальный класс для этого - MovieClipLoader, в котором, кстати события, которые ты подловил разделены: onLoadComplete :загрузка завершена, но методы и свойства еще не определены.. onLoadInit :загрузка завершена и контент инициализирован.. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Угу. Наверное есть период у каждого, когда пытаешься все, что уже умные люди сделали, сделать по-своему.
сделал, получилось,забыл. Теперь буду пользовать готовый класс ![]() |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
у каждого есть период, когда пытаешься понять суть вопроса, а не берешь готовый черный ящик. у некоторых этот период не заканчивается вообще, просто максимализм в этом вопросе отпадает. :) но это нечастый случай.
http://noregret.org/tutor/resize/ |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 5
|
Уже прочитал, спасибо.
Но там ничего не говорится о том, что после загрузки картинка еще и должна проинициализироваться. Кстати, с чего началось это все - свой аналог класса MovieClipLoader написал, он работал нормально. Потом решил уменьшить интервал вызова функции, в которой идет проверка на окончание загрузки - не знаю уже, зачем . Тут и вылезло _width=0 Перефразирую немного: "сделал, разобрался,забыл." ![]() Всем спасибо. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
ты используешь setInterval не по назначению. событие загрузки - асинхронное. т.е. загрузка может закончиться в любой момент между сменой кадров. при помощи сетИнтервал ты можешь узнать об окончании загрузки почти в тот момент, когда она завершилась... НО. пока плеер не перерисует загруженное, пользоваться свойтсвами _width и _height не получится. то есть при ближайшей смене кадров всё уже встанет на свои места - а до этого будет глухо. я в рецепте показываю, как отслеживать загрузку с помощью onEnterFrame. это самый простой рабочекрестьянский метод... он же - безошибочный :) потому что в момент, когда сработает onEnterFrame, плеер уже перейдет в новый кадр, и если загрузка завершилась - он будет об этом знать, и клип будет доступен для работы. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:28. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|