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

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

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

Регистрация: Aug 2007
Сообщений: 11
По умолчанию Как достать ширину загруженной картинки?

Проблема в том, что трейс показывает НОЛЬ. Помогите.
Код:
_root.createEmptyMovieClip("imageHolder",1);
_root.imageHolder.loadMovie("image_1.jpg");
trace(_root.imageHolder._width);

Старый 25.08.2007, 03:04
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код:
this.createEmptyMovieClip("image_mc", this.getNextHighestDepth());
//
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {
	trace(target_mc._width)
};
//
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip("asdf.jpg", image_mc);

Старый 25.08.2007, 03:06
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 3  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Скорее всего, проблема в том что ширина измеряется до того как изображение загружено. используй onLoad или SetInterval
__________________
А я Томат.

Старый 25.08.2007, 04:46
venegy вне форума Посмотреть профиль Отправить личное сообщение для venegy Найти все сообщения от venegy
  № 4  
Ответить с цитированием
venegy

Регистрация: Aug 2007
Сообщений: 11
Постепенно подхожу к цели, но возникла следующая проблема: как достать значение ширины, чтобы использовать его вне функции loadImage?
Код:
function loadImage(mc, img){
/*	mc - куда кладем картинку, 
	img - имя картинки для загрузки 
	*/
	var mclListener:Object = {};
	mclListener.onLoadInit = function(target_mc:MovieClip)
	{
		mclListener.onLoadInit.imgWidth = target_mc._width;
		trace(mclListener.onLoadInit.imgWidth); //здесь получаем ширину картинки, которую необходимо использовать извне (там, где уже вызывается функция loadImage)
	}
	mclListener.onLoadComplete = function()
	{
	delete image_mcl;// delete mclListener;
	}
	var image_mcl:MovieClipLoader = new MovieClipLoader();
	image_mcl.addListener(mclListener);
	image_mcl.loadClip(img, mc);}


Последний раз редактировалось venegy; 25.08.2007 в 05:00.
Старый 25.08.2007, 13:10
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 5  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
venegy
ты сначала задай ширину пустому мувиклипу.

Старый 25.08.2007, 13:55
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
to Mr. Fixit: зачем?

to venegy: ты можешь узнать ширину мувика, только по наступлению события onLoadInit (т.е. картинка твоя не загружается мгновенно), вот и думай исходя из этого.

Старый 25.08.2007, 15:47
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Знаю, что это типа муветон, но я просто в _root переменную завожу или в _global. Соотв. пишешь в онЛоадИнит
Код:
_root.imgWidth = target_mc._width;
и дальше используешь ссылку _root.imgWidth
__________________
Reality.getBounds(this);

Старый 25.08.2007, 16:12
venegy вне форума Посмотреть профиль Отправить личное сообщение для venegy Найти все сообщения от venegy
  № 8  
Ответить с цитированием
venegy

Регистрация: Aug 2007
Сообщений: 11
Пробовал. Так не получается. Проблема как раз в том, что переменная не принимает нужные значения (onLoadInit отрабатывает позже, чем я обращаюсь к переменной...).
udaaff, ты намекал на что-то... Может, мне структуру функций переделать. Прежняя была такая:
loadImage(mc, img)
mc - куда кладем картинку,
img - имя картинки для загрузки
внутри неё - функция для обработчика onLoadInit (которая давала нужный мне параметр - ширину загружаемой картинки)

Далее я Вызываю первичную функцию loadImage(mc, img) в цикле для загрузки картинок. Но! Мне нужна ширина картинки. Накапливая ширину каждой загруженной картинки в переменную в этом цикле я получу возможность расставлять картинки одну за другой (в длинную колбасу). Может, изначально логика неверная? Спасибо за участие.

Старый 25.08.2007, 17:00
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
>>onLoadInit отрабатывает позже, чем я обращаюсь к переменной

Тогда, простите, чью ширину Вы хотите использовать? Картинки-то еще нет
Да, логика неверная

Цикл выдает несколько тысяч итераций в секунду, т.е. Вы начнете грузить картинки одновременно, а вот время, за которое они будут загружаться, зависит от их веса. Таким образом шестая картинка может загрузиться раньше всех - куда Вы ее поставите, если ширина остальных еще не известна? Выход - грузить картинки по-очереди, не в цикле, а загружая следующую по событию онЛоадКомплит предыдущей. Или вар.2 - загрузить все картинки в одну пачку в невидимом мувике, сделать его видимым и пересчитать координаты всех картинок. Или вар.3 - отображать некие ячейки одного размера, возможно с прелоадером внутри, при окончании загрузки каждой картинки вызывается функция пересчета всей колбасы - получится динамическая такая загрузка
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 25.08.2007 в 17:15.
Старый 25.08.2007, 18:29
venegy вне форума Посмотреть профиль Отправить личное сообщение для venegy Найти все сообщения от venegy
  № 10  
Ответить с цитированием
venegy

Регистрация: Aug 2007
Сообщений: 11
Первый вариант подходит больше всего моему замыслу. Вообще я хочу добиться, чтобы каждая картинка грузилась полностью (с прелоудером) и только после этого начинала подгружаться следующая.
Но как это организовать с помощью онЛоадов?

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

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

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


 


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


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