![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2001
Адрес: St Petersburg
Сообщений: 65
|
Всем привет!
В продолжение разговора(?)о внешних загружаемых мувах. Скажем, на кнопку подвшена загрузка мува в клип-контейнер на level0: _root.mh on(release) { loadMovie("my.swf","_root.mh"); ... //define file size with (_root.mh) { total=getBytesTotal(); } } Однако вызов getBytesTotal() как в скрипте подвешенном на кнопку (см. выше), так и в обработчике контейнера _root.mh, куда фильма грузится, показывает не реальный размер, а какое-то малое число, например 12. Связано ли это с тем, что реально в момент вызова загрузка еще не началась? Если дело в этом, то как отловить факт начала загрузки? Сразу оговорюсь, что 1. ресурс качается с сервера; 2. в основной сцене все лежит в одном кадре (так нужно - просто все написано на AS в стиле системы с диспетчеризацией событий и с-ма крутится в цикле в 1 кадре). Знакомая проблема? |
|
|||||
|
Регистрация: Jun 2002
Адрес: Argentine
Сообщений: 217
|
А ты у чего, собственно говоря, измеряешь getBytesTotal()?.. У кнопки?..
|
|
|||||
|
Регистрация: Aug 2001
Адрес: St Petersburg
Сообщений: 65
|
Да, нет же, конечно не у кнопки, а у клипа-контейнера -root.mh, куда мой внешний мув грузится (см. код в первом письме). Однако, почитал я найденное в поиске и ... ясно, что та еще функция getBytesTotal. Кстати, может проблема в том, что swf, который я гружу всего из 1 кадра
(просто растр). Сейчас проверю что-нибудь еще. |
|
|||||
|
Регистрация: Jun 2002
Адрес: Argentine
Сообщений: 217
|
Упс... да, это я как всегда невнимательно смотрю... а вообще в 1 строчке with использовать не в тему... А чтобы легче тебе было помогать, дай исходник, там и посмотрим...
|
|
|||||
|
Регистрация: Aug 2001
Адрес: St Petersburg
Сообщений: 65
|
Спасибо за участие.
Вот собственно фрагмент кода-болванки (пришлось слепить на ходу выдрав из системы) - фактически просто комбинация клипа-контейнера и прелоадера с тестовыми полями. Похоже, что все замечательно работает, я имею ввиду getBytesTotal, когда вызов стоит в самом муве (см. многочисленные исходники прелоадеров на форуме). Что до with, то тут просто дельфийско-паскалевская привычка экономного письма. |
|
|||||
|
Регистрация: Jun 2002
Адрес: Argentine
Сообщений: 217
|
Ну ты и написал.... У меня аж перегрев случился...
На самом деле, че тебе надо то?.. Я сначала думал, что понимаю, а когда пример посмотрел, то стал сомневаться... Я понял так - при нажатии на кнопку тебе надо начать грузить мув в мув и при этом выводить статистику по загрузке, так?.. |
|
|||||
|
Регистрация: Jun 2002
Адрес: Argentine
Сообщений: 217
|
Все, короче, просек я твою фишку... Блин, голова совсем под вечер не варит... Еще на диско идти... Кошмар...
Ладно, к делу: Ты не можешь перехватывать инфу про подгружаемый мув из мува, в который он грузится... Почему он не перехватывается кнопкой - точно не знаю, но могу предположить, что в одном событии он (флэш) не реагирует на подгружаемые данные (так же как, нельзя написать на кнопку загрузить текстовую переменную и тут же чему-нибудь присвоить ее значение ...). Посему, решение такое - стирай все, что ты там написал , и _root.mh.getBytesTotal(); пихай на _root.onEnterFrame в первый кадр (собственно, единственный)... туда же пихай всякие там процентов рассчет и т.п. Так все работает...Кстати, ты че мне сказал, что мув - это растр... я с трудом услышал это пищани... Только благодаря тому, что бук у меня на коленях... Так сказать, внутренним ухом уловил... Если не работает (хотя этого не может быть), или че-то не подходит, дай знать... |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
все правильно... на то, чтобы получить сведения о размере файла тоже нужно время...
но я не понимаю зачем тебе вообще засекать размер в самом начале... никто не мешает опрашивать getBytesTotal каждый кадр - это несколько избыточно, но затраты времени на эту операцию ничтожны... зы: встретились как-то Nob, Nex и Nox :))))) |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
+ фишка еще в том, что гетБайтсЛоадед\Тотал можно опрашивать и у обычных клипов
в которые ничего не грузится... поэтому если у тебя клип, в который ты грузишь не был пустым, то сначала и тотал и лоадед не будут равны нулю !.. ![]() |
|
|||||
|
Регистрация: Aug 2001
Адрес: St Petersburg
Сообщений: 65
|
> Nex
Ты прав - в корне все работает, однако не менее прекрасно оно работает если повторять опрос постоянно, при этом неважно куда подвешен код - на контейнер, куда грузим, на индикатор или хотя бы прямо в корень (_root). Конечно на опрос функции требуется время, однако можно проверять результат, возвращаемый getByteTotal() (звучит абсурдно, но вот статистика опроса - -1; 0; реальный размер), см. код далее, подвешенный на контейнер: onClipEvent (load) { this.total=0; this._NAN_total=-1; _root.t=total; } onClipEvent (enterFrame) { // Это, если лениво каждый раз опрашивать размер if ((total <> NAN_total) || (total = 0)) { NAN_total=total; total=getBytesTotal(); _root.t="total is "+total }; // Опрос в каждом frame'е // total=getBytesTotal(); // _root.t="total is "+total _loaded=getBytesLoaded(); this.pt=_loaded; } Фильма с растром была из 1 кадра, вот я и положил sound, что под руками было. P.S. Это ты хорошо заметил, насчет внутреннего уха... ![]() > Nox Noctis 1. С фишкой все ясно - any clip все равно ведь грузился, вне зависимости, обрабатывал ты событие load или нет. 2. Опрашивать "каждый раз" можно и все конечно будет работать, но ... 2.1. Существует алгоритмическое программирование 2.2. Когда суммарный AS тянет на 40-50 Kb, слоев и клипов на сцене немерено и диспетчер все это шарит... вопрос вызова может стать критичным. Хотя, кто знает? (Сейчас обвинят в sNobизме. Шутка.) Так что, все работает в клипе и вне его. Спасибо ребята. Топику конец. Надеюсь, что не знакомству. Закончу, кину link, если интересно. Удачи всем! |
![]() |
Часовой пояс GMT +4, время: 21:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|