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

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

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

Регистрация: Jan 2010
Сообщений: 2
По умолчанию Резиновый Флэш с ориентацией по центру.

Доброе время суток!
Занимался флэшем на делитантском как теперь понял уровне раньше.
Тут нада сделать резиновый баннер, проблема в том, что элементы мувика уже анимированы и двигаются по центру баннера с фиксированной шириной. Нужно слева и справа поидее продлить черный фон у баннера(слева и справа от фикс. ширины).
Пробовал поотдельности посчитать ширину и продлить фон квадратика слева и справа по примеру http://noregret.org/tutor/elastic/. Но не оч получилось, точнее ноль реакции вообще. Сейчас есть идея (если это возможно) объединить баннер в 1 мувиклип и закинуть его в другой баннер, в котором бы был черный фон, растягивающийся по горизонтали в зависимости от размеров окна и поверх него поцентру этот мувиклип который через AS тоже отцентровать.
Следовательно вопросы:
1) Как запихнуть баннер в мувиклип(что то типа аналога Smart Object в Photoshop), назначить ему имя и возможно ли это?
2) Может есть какое-то другое более логичное решение?
3) Ниже приведу код, которым собираюсь организовывать это все, может там тоже что-то нада поправить:
Код AS1/AS2:
Stage.scaleMode = "noScale";
 
// создадим объект
Listener1 = {};
// создадим метод onResize
Listener1.onResize = function () {
bg._width = Stage.width;
clip._x = (Stage.width/2) - clip._width;
}
 
Stage.addListener(Listener1);
Где clip - имя мувиклипа который объеденен, bg - имя прямогульник под ним(автофигуры).

Поиск юзал, искал не только на этом форуме(ключ: "резиновый") но и ... да где тока не искал. Буду очень благодарен за помощь и совет. Слой для AS создавал подо всеми слоями и в первом кадре писал этот код.

Добавлено через 11 часов 21 минуту
Поставим вопрос по-другому, я кидаю исходник уже готового баннера но с фиксированной шириной. Нужно поместить этот баннер на тянущийся в ширину фон по середине. Цена вопроса 10$.

Добавлено через 33 часа 51 минуту
Сделал сам, работает почти так как нада, но не совсем.
При загрузке Флэш-баннера он не ратсягивается на 100%, а когда начинаешь менять ширину окна, Флэшка делает все как нада - центруется и продливает фон. Сделано по принципе который я опсиал выше:
1) я создал фон - это черный прямоугольник
2)поверх фона создал прозрачнй прямоугольник шириной на всю сцену(950пх), конвертил егов мувиклип,обозвал, и запихнул в него все что должно происходить по центру мувика.
3) Созда еще один слой в первом кадре AS-ом оцентровал мувиклип с пункта №2 и растянул на ширину Stage.width черный прямоугольник.

Почему так сранно работает? Как сделать что бы все что происходит у меня при изменении размеров окна происходило сразу же при загрузке Флэш-баннера?

Старый 19.01.2010, 01:29
nondescript вне форума Посмотреть профиль Отправить личное сообщение для nondescript Найти все сообщения от nondescript
  № 2  
Ответить с цитированием
nondescript

Регистрация: Jan 2010
Сообщений: 9
У меня такая же проблема, только я разворачиваю на весь экран командой fscommand("fullscreen",true);
и естественно все объекты растягиваются

Как бы от этого избавиться и сохранить пропорции?

Старый 19.01.2010, 11:13
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от nondescript Посмотреть сообщение
У меня такая же проблема, только я разворачиваю на весь экран командой fscommand("fullscreen",true);
и естественно все объекты растягиваются

Как бы от этого избавиться и сохранить пропорции?
Stage.scaleMode = 'noscale'; разве не препятствует растяжению объектов ролика?

Используйте уменьшение масштаба / сокрытия нужных элементов при переходе в полный экран и восстановления до 100% других, ради которых полный экран и затевается. Я делал плеер, приведу пример оттуда. Это там реализован именно так, когда фильм раскрывается во весь экран. При этом при добавлении видеообъекта я задал ему область во всю сцену, а потом в нормальном режиме сократил до 40%. Когда идет раскрытие во весь экран, функция просто восстанавливает его масштаб до родного 100%. А поскольку при этом видеообласть занимала всю сцену (при монтаже так было сделано), то фильм просто стал занимать весь экран.

При выходе из режима fullscreen область видео опять занимает 40% и при этом выглядит так, как было задумано в нормальном режиме.
То есть принцип такой - создавайте все объекты так, как они будут выглядеть в режиме "во весь экран", а потом делайте им обратное масштабирование с уменьшением так, чтобы их размеры были как в нормальном режиме. Напишите аналогичную функцию, которая бы управляла масштабированием.

Привожу код ради идеи.
Код AS1/AS2:
var stageListener:Object = new Object();
Stage.addListener(stageListener);
stageListener.onFullScreen = fScreen;
 
/// ОТРАБОТКА ПОЛНОГО ЭКРАНА ////////////////////////////////////
function fScreen(bFull:Boolean) {
	if (bFull) {
		player_mc.video_cont._xscale = player_mc.video_cont._yscale = 100;
	}
	else {
		player_mc.video_cont._xscale = player_mc.video_cont._yscale = 40;
	}
 
}
 
fsb.onRelease = function() {
	Stage.displayState = 'fullscreen';
};
 
closefs_btn.onRelease = function  () {
	Stage.displayState = 'normal';
};


Последний раз редактировалось mooncar; 19.01.2010 в 11:19.
Старый 19.01.2010, 23:44
Challenger вне форума Посмотреть профиль Отправить личное сообщение для Challenger Найти все сообщения от Challenger
  № 4  
Ответить с цитированием
Challenger

Регистрация: Jan 2010
Сообщений: 2
я полностью разобрался со своим вопросом, пришлось дописать еще одного слушателя и еще одну функцию для изменения рулика после загрузки.

Старый 20.01.2010, 19:44
nondescript вне форума Посмотреть профиль Отправить личное сообщение для nondescript Найти все сообщения от nondescript
  № 5  
Ответить с цитированием
nondescript

Регистрация: Jan 2010
Сообщений: 9
Цитата:
Сообщение от mooncar Посмотреть сообщение
Stage.scaleMode = 'noscale'; разве не препятствует растяжению объектов ролика?
Я сделал по другому, всего 4 строки. У меня задача была развернуть на весь экран бэкграунд а обьекты оставить в исходном размере.
Код AS1/AS2:
fscommand("fullscreen",true); // запускает на весь экран
fscommand("allowscale",false); // запрещаем растягивание
fscommand("showmenu",false); // убераем меню
fscommand("trapallkeys",true); // запрещаем КЛАВИАТУРУ (Esc и сочетания)

Старый 26.01.2010, 16:19
tanjasun вне форума Посмотреть профиль Отправить личное сообщение для tanjasun Посетить домашнюю страницу tanjasun Найти все сообщения от tanjasun
  № 6  
Ответить с цитированием
tanjasun

Регистрация: Mar 2004
Адрес: Красноярск
Сообщений: 31
Отправить сообщение для tanjasun с помощью ICQ
Кто знает как сделать, чтобы баннер растягивался в обе стороны только по ширине, а высота оставалась фиксированной? На сайте резиновая вёрстка, нужно как-то баннер растянуть, чтобы не смотрелся заплаткой.
__________________
Работаем...
www.oksite.ru

Старый 26.01.2010, 16:27
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Попробуйте сделать на странице блок с шириной 100% и опубликовать в него флешку, ей также для публикации выставить 100% ширины.


Последний раз редактировалось mooncar; 26.01.2010 в 16:38.
Старый 26.01.2010, 16:38
tanjasun вне форума Посмотреть профиль Отправить личное сообщение для tanjasun Посетить домашнюю страницу tanjasun Найти все сообщения от tanjasun
  № 8  
Ответить с цитированием
tanjasun

Регистрация: Mar 2004
Адрес: Красноярск
Сообщений: 31
Отправить сообщение для tanjasun с помощью ICQ
В том и вопрос: как сделать у флеша 100% ширины без изменения высоты? В настройках ширина в процентах не задаётся.

Добавлено через 7 минут
Только не нужно советовать задать в поиске "резиновый" и давать ссылку на пример - http://noregret.org/tutor/elastic/ - в этом примере баннер просто растягивается на весь экран по высоте и ширине так, что все объекты деформируются.
__________________
Работаем...
www.oksite.ru

Старый 26.01.2010, 16:52
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 9  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Да, действительно, вместе не получается.
Но есть решение. Сейчас сформулирую.

Добавлено через 23 минуты
Есть варианты, зависящие от сценария растягивания.
Вопрос вам - что у вас должно растягиваться по ширине при растягивании баннера?
1) Во флешке есть фон с повторяющимися элементами, и они должны размножаться вправо и влево от основного сюжета?
2) Или фон во флешке однородный и может быть деформирован в ширину при растяжении, а базовый сюжет - нет?

Добавлено через 33 минуты
Если первый вариант, то можно нарисовать внутри баннера вправо и влево какие-то элементы и сделать код публикации так (скачайте себе SWFObject 2 версии для этого, если публикуете сейчас без него):
Код:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>rubber</title>
<script type="text/javascript" src="swfobject.js"></script>
<script language="javascript">
var Flashvars = false;
var Params= {  
	menu: "false",
	allowScriptAccess: "sameDomain",
	allowFullScreen: "false",
	quality: "high",
	bgcolor: "#000000",
	wmode: "transparent",
	scale: "noscale"
};
var Attributes = {  align: "middle" }
};
swfobject.embedSWF("rubber.swf", "rubber", "100%", "100%", "9.0.0", "expressInstall.swf", Flashvars, Params, Attributes);
</script>
</head>

<body bgcolor="#cccccc">

<div style="height:200px; width:100%;">
<div id="rubber">
Здесь будет флешка.
</div>
</div>    

</body>
</html>
Допустим, баннер 200px в высоту.
Тогда задаем два блока - внешнему <div> задем 200px высоты и 100% ширины, а публикуем флешку во внутренний с id="rubber", выставляя ей 100% в обеих измерениях и режим scale: "noscale".

То есть в сухом остатке флеш тут получается не "резиновым", а "резиновой" делается область его видимости.


Последний раз редактировалось mooncar; 26.01.2010 в 17:38.
Старый 26.01.2010, 18:08
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вот, посмотрите на результат, что получается:
http://www.us-pro.ru/mooncar/rubber/rubber.html
Исходники приложил...
Вложения
Тип файла: rar rubber.rar (11.1 Кб, 1393 просмотров)

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

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

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


 


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


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