Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.01.2006, 13:24
ksanster вне форума Посмотреть профиль Отправить личное сообщение для ksanster Найти все сообщения от ksanster
  № 1  
Ответить с цитированием
ksanster

Регистрация: Jan 2006
Сообщений: 5
По умолчанию изменение размеров загруженного jpeg

Проблема. Есть код:
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)

Где косяк?

Старый 24.01.2006, 14:31
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ну и смотри только _width (что тебе loadedBytes == totalBytes), раз грузишь в создаваемый мувик, а смотришь сетинтервалом..
хотя есть и нормальный класс для этого - MovieClipLoader, в котором, кстати события, которые ты подловил разделены:
onLoadComplete :загрузка завершена, но методы и свойства еще не определены..
onLoadInit :загрузка завершена и контент инициализирован..

Старый 24.01.2006, 15:26
ksanster вне форума Посмотреть профиль Отправить личное сообщение для ksanster Найти все сообщения от ksanster
  № 3  
Ответить с цитированием
ksanster

Регистрация: Jan 2006
Сообщений: 5
Угу. Наверное есть период у каждого, когда пытаешься все, что уже умные люди сделали, сделать по-своему.
сделал, получилось,забыл. Теперь буду пользовать готовый класс

Старый 24.01.2006, 15:50
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 4  
Ответить с цитированием
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
у каждого есть период, когда пытаешься понять суть вопроса, а не берешь готовый черный ящик. у некоторых этот период не заканчивается вообще, просто максимализм в этом вопросе отпадает. :) но это нечастый случай.

http://noregret.org/tutor/resize/

Старый 24.01.2006, 16:00
ksanster вне форума Посмотреть профиль Отправить личное сообщение для ksanster Найти все сообщения от ksanster
  № 5  
Ответить с цитированием
ksanster

Регистрация: Jan 2006
Сообщений: 5
Уже прочитал, спасибо.
Но там ничего не говорится о том, что после загрузки картинка еще и должна проинициализироваться.
Кстати, с чего началось это все - свой аналог класса MovieClipLoader написал, он работал нормально. Потом решил уменьшить интервал вызова функции, в которой идет проверка на окончание загрузки - не знаю уже, зачем . Тут и вылезло _width=0
Перефразирую немного: "сделал, разобрался,забыл."
Всем спасибо.

Старый 24.01.2006, 16:17
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 6  
Ответить с цитированием
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Но там ничего не говорится о том, что после загрузки картинка еще и должна проинициализироваться.
не сказано, потому что это не требуется.

ты используешь setInterval не по назначению.
событие загрузки - асинхронное.
т.е. загрузка может закончиться в любой момент между сменой кадров.
при помощи сетИнтервал ты можешь узнать об окончании загрузки почти в тот момент, когда она завершилась... НО. пока плеер не перерисует загруженное, пользоваться свойтсвами _width и _height не получится. то есть при ближайшей смене кадров всё уже встанет на свои места - а до этого будет глухо.

я в рецепте показываю, как отслеживать загрузку с помощью onEnterFrame. это самый простой рабочекрестьянский метод... он же - безошибочный :)
потому что в момент, когда сработает onEnterFrame, плеер уже перейдет в новый кадр, и если загрузка завершилась - он будет об этом знать, и клип будет доступен для работы.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:12.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.