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

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

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Все верно, но масштабирование flash тоже должно работать из коробки, без дополнительных действий.
С чего бы это?

Старый 29.11.2012, 23:52
AlexeiSulga вне форума Посмотреть профиль Отправить личное сообщение для AlexeiSulga Найти все сообщения от AlexeiSulga
  № 2  
Ответить с цитированием
AlexeiSulga

Регистрация: Sep 2007
Сообщений: 43
У меня было несколько похожая задача. Есть флешка с фиксированной шириной, высоту влешки меняет javascript.

HTML, JS
Код AS3:
var fo = new FlashObject("myflash.swf", "myFlash", "919", "2000", "10");
<div style="width:919px; height:754px;" id="flashcontent_widget">
</div>
function resizeFlash(h)
{
$("#myFlash").attr("height", h);
}
Стартовые размеры флешки 919x754. Значение высоты 2000 в данном случае роли не играет.

AS3 Document class
Код AS3:
stage.scaleMode = flash.display.StageScaleMode.NO_SCALE;
stage.align = flash.display.StageAlign.TOP_LEFT;
stageResize();
stage.addEventListener(Event.RESIZE, stageResize, false, 0, true);
private function stageResize(event:Event = null):void 
{
	this.scaleX = this.scaleY = stage.stageWidth / 919;
}
"stage.stageWidth меньше stage.width". В моем понимании stage.stageWidth это ширина swf в браузере. Она зависит от html, stage.width - это ширина объектов на сцене. Необходимо также учитывать zoom в самом браузере. Если 1 тогда все нормально, если пользователь увеличит zoom тогда stage.stageWidth увеличится, в этом случае флешь дожен изменить scaleX document класса.

Другая серьезная проблема с которой я столкнулся быля связана с тем что при изменении размера swf из JS наблюдалось кратковременное (примерно 0.2 секунды) изменение aspect ratio флешки. Это было заметно и неприемлемо. Протестировал все 4 варианта StageScaleMode: SHOW_ALL, NO_SCALE, NO_BORDER, EXACT_FIT. Нормально работает только NO_SCALE.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Все верно, но масштабирование flash тоже должно работать из коробки, без дополнительных действий. Я пытался разобраться почему это не так.
Насколько я понял Ваше представление этого процесса, если, скажем, в начале после запуска ролика на сцене лежит красный кружок и начинает двигаться вправо, то "из коробки" Вы ожидаете получить постоянное уменьшение изображения таким образом, чтобы кружок никогда не вышел из поля видимости? Бедные, бедные мультипликаторы...
SHOW_ALL означает, что прямоугольник дефолтного размера стейджа всегда будет полностью виден. Что там творится за границей "рабочего стола", никого не волнует. Мультипликаторы обычно держат там всякое зверье, входящее в кадр и выходящее из него, а у игроделов там покусанные края карты. И ни те, ни другие не хотят, чтобы юзер любовался бардаком за сценой.

Добавлено через 3 минуты
Сорри. "Творческим беспорядком")))
__________________
Reality.getBounds(this);

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

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 921
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Цитата:
Я отключаю ненужные объекты с помощью visible, поэтому не задумывался о таком случае, но, по сути, вы правы.
Если бы stage включал в себя все объекты, от него было бы не спрятаться
Воспользуйтесь маской.
http://help.adobe.com/ru_RU/FlashPla...ject.html#mask

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Цитата:
Другая серьезная проблема с которой я столкнулся быля связана с тем что при изменении размера swf из JS наблюдалось кратковременное (примерно 0.2 секунды) изменение aspect ratio флешки. Это было заметно и неприемлемо. Протестировал все 4 варианта StageScaleMode: SHOW_ALL, NO_SCALE, NO_BORDER, EXACT_FIT. Нормально работает только NO_SCALE.
То есть вам при NO_SCALE удалось избавиться от этого эффекта? я просто так тоже делал в одном проекте и флешка бликует и дергается при изменении размера (а размер менялся при переключении стр.), особенно в хроме, избавиться от этого пока так и не удалось. Параметр StageScaleMode - NO_SCALE

Старый 01.12.2012, 01:17
AlexeiSulga вне форума Посмотреть профиль Отправить личное сообщение для AlexeiSulga Найти все сообщения от AlexeiSulga
  № 6  
Ответить с цитированием
AlexeiSulga

Регистрация: Sep 2007
Сообщений: 43
Цитата:
Сообщение от PainKiller Посмотреть сообщение
То есть вам при NO_SCALE удалось избавиться от этого эффекта? я просто так тоже делал в одном проекте и флешка бликует и дергается при изменении размера (а размер менялся при переключении стр.), особенно в хроме, избавиться от этого пока так и не удалось. Параметр StageScaleMode - NO_SCALE
Тоже блики и дергания были, но проблема решилась. Код приведен выше.

Код AS1/AS2:
var fo = new FlashObject("myflash.swf", "myFlash", "919", "2000", "10");
Попробуйте не задавать размеры флешки как 100%.


Последний раз редактировалось AlexeiSulga; 01.12.2012 в 01:20. Причина: Забыл код добавить
Старый 01.12.2012, 21:07
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 7  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Цитата:
Попробуйте не задавать размеры флешки как 100%.
Да у меня флешка задана как 100%, но от этого в проекте уже никак не денешся. А вообще в IE и FF все выглядит более менее приемлимо, вот хром сурово страницы перерисовывает. А вообще обсуждение ценное, учту на будущее :-)

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

Теги
stage scaling , Stage.scaleMode , масштабирование , размер окна
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


 


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


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