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

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

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

Регистрация: Dec 2010
Сообщений: 12
По умолчанию Ресайзинг загруженной SFW в контейнере

Добрый вечер!

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

Делаю pагрузку следующим образом:

Код AS3:
var ldr:Loader = new Loader(); 
var urlReq:URLRequest = new URLRequest("../intro/intro.swf"); 
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); 
ldr.load(urlReq); 
 
function loaded(event:Event):void 
{
	var intro:MovieClip = event.target.content;
/*
	intro.width = logo.width;
	intro.height = logo.height;
*/
	logo.addChild (intro);
}
Если запустить код в таком виде, то контейнер logo растянется до размера загружаемой флэшки intro. А если раскомментировать две строчки - флэшка всё равно не вписывается полностью в контейнер, хоть и становится меньше.

В идеале хотелось бы иметь алгоритм, позволяющий масштабировать флэшку до размера контейнера, независимо от её "оригинального" размера/соотношения сторон.

Буду благодарен за подсказку или пример кода.
Спасибо.

P.S.
Контейнер logo - это обычный статичный MovieClip на сцене.

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Что представляет из себя контейнер? Спрайт?
DisplayObject имеет нулевые размеры, если в нём ничего нет.
Если же внутри что-то есть то размер равен размеру содержимого.


Последний раз редактировалось illuzor; 03.04.2011 в 22:46.
Старый 03.04.2011, 22:20
alexg вне форума Посмотреть профиль Отправить личное сообщение для alexg Найти все сообщения от alexg
  № 3  
Ответить с цитированием
alexg

Регистрация: Dec 2010
Сообщений: 12
Это MovieClip с вполне заданными размерами.

Старый 03.04.2011, 22:26
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 4  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
http://www.greensock.com/autofitarea/
Может такая штука поможет...

Цитата из хелпа
Цитата:
width свойство
width:Number
Ширина вычисляется на основе границ содержимого экранного объекта.
За исключением объектов TextField и Video, экранные объекты без содержимого (например, пустой спрайт), имеют ширину 0, даже если задать свойству width другое значение.
Аналогично с высотой


Последний раз редактировалось illuzor; 03.04.2011 в 22:28.
Старый 03.04.2011, 22:55
alexg вне форума Посмотреть профиль Отправить личное сообщение для alexg Найти все сообщения от alexg
  № 5  
Ответить с цитированием
alexg

Регистрация: Dec 2010
Сообщений: 12
illuzor, спасибо. Однако такой фреймворк подключать не хочется - уж больно много там всего, чего не требуется. Мне достаточно только отмасштабировать загружаемый контент под размер контейнера без всяких примочек. Буду благодарен, если кто ещё что-нибудь посоветует по этому поводу.

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
alexg, фреймворк весит всего 3.5kb. Это совсем немного. Он очень прост в использовании.
Намного проще, чем писать что-то подобное самому.

Можно ещё рисовать через graphics в мувиклипе прозрачный прямоугольник и затем
Код AS3:
intro.width = logo.width;
intro.height = logo.height;

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

Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
Поместите на фон загружаемой флешки шейп или прозрачный спрайт тогда размеры флешки и содержимого будут совпадать. или как вариант прибавляйте к intro.width и intro.height расстояние до самого верхнего левого элемента. или пользуйтесь intro.scaleX/intro.scaleY если вам известны размеры загружаемой флешки
Код AS3:
var h:Number = 300;
var w:Number = 500;
//размер загружаемой флешки
var hr:Number = logo.height;
var wr:Number = logo.width;
//нужно изменить размер до размера logo
intro.scaleY = hr / h;
intro.scaleX = wr / w;


Последний раз редактировалось kseniya; 04.04.2011 в 00:44.
Старый 04.04.2011, 01:15
alexg вне форума Посмотреть профиль Отправить личное сообщение для alexg Найти все сообщения от alexg
  № 8  
Ответить с цитированием
alexg

Регистрация: Dec 2010
Сообщений: 12
Цитата:
Поместите на фон загружаемой флешки шейп или прозрачный спрайт тогда размеры флешки и содержимого будут совпадать.
Спасибо огромное, получилось!

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

Теги
AS3 , loader , swf
Опции темы
Опции просмотра

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

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


 


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


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