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

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

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

Регистрация: Oct 2007
Сообщений: 60
По умолчанию Логическая задача с масштабированием

1) Флеш ролик имеет размер рабочей области 1024х768
2) В HTML ему задан размер 100%х100% (тобиш он имеет размер рабочей области браузера)
3) С помощью JS ему передаются значения Width и Height рабочей области браузера
4) Ролик загружает картинки размер которых мне известен - по завершении загрузки, так как я получаю их из _width и _height того MovieClipа в который гружу картинку. И размер получаю верный.
5) Ширина картинки (МувиКлипа) всегда привязывается к максимальной ширине ролика - 1024.

Вопрос: Как мне при разных размерах\пропорциях рабочей области браузера, мне установить высоту картинки в правильных пропорциях относительно ширины рабочей области браузера.

Все вводные есть. Не могу за много часов найти решение.
Для простоты понимания я делаю следующее: мой флеш грузит некую картинку которая всегда больше по высоте чем по ширине. Ее можно скролить мышкой вверх и вниз, а в стороны она всегда равна ширине флешки, в свое время флешка равна 100% высоты и ширины рабочей области браузера. Я имею в флешке переменные с этой рабочей областью.

Старый 23.04.2009, 16:18
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Что такое "правильных пропорциях относительно ширины рабочей области браузера"?
Чем определяется правильность?

А в общем случае, чтобы сохранялись пропорции контента при масштабировании достаточно обе оси скалить одинаково
mc._xscale = mc._yscale = N;
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 23.04.2009, 16:18
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 3  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
что-то вы заморочились с js.. если флеш растягивается и занимается 100% области, то его размеры можно узнать через Stage.width, Stage.height

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

ps: по аватарке не видно.. вы случайте не also know as Warlord?

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

Регистрация: Oct 2007
Сообщений: 60
Цитата:
Сообщение от dimarik Посмотреть сообщение
Что такое "правильных пропорциях относительно ширины рабочей области браузера"?
Чем определяется правильность?

А в общем случае, чтобы сохранялись пропорции контента при масштабировании достаточно обе оси скалить одинаково
mc._xscale = mc._yscale = N;
Внутри флешки скалить да... проблем нет. Но флешка то имеет процентный размер и растягивается с браузером... Внутри флешки чёткие координаты и размеры 1024х768 например. Ширина картинки подгоняется до ширины ролика - 1024. А вот высота картинки должна быть пропорциональна ширине и при этом учитывать то, на сколько ролик был "сплющен" или "растянут" вместе с рабочей областью браузера. То есть например сделав окно браузера растянутым в ширину и сильно сжатым по высоте, я должен увидеть картинку занимающую по ширине все окно браузера, и при этом по вертикали верно смасштабированную, а уж сколько там ее придётся в этом узеньком оконце прокручивать вниз или вверх иное дело...

Добавлено через 2 минуты
Цитата:
Сообщение от fljot Посмотреть сообщение
что-то вы заморочились с js.. если флеш растягивается и занимается 100% области, то его размеры можно узнать через Stage.width, Stage.height

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

ps: по аватарке не видно.. вы случайте не also know as Warlord?
Попробую задействовать "Stage". до этого просто не имел дела с ними. Но в итоге видимо всеравно приду к тому, что нажно будет найти зависимость "внутреннего" размера ролика (заданного при разработке), и его физического размера объекта в браузере (неважно как я получу размер объекта через Stage или Явой).

P.S. Я есмъ

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Варыч, а не легче поставить Stage.scaleMode = "noScale" ?)

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

Регистрация: Oct 2007
Сообщений: 60
Не. похоже не совсем то со Stage. Это я получаю рабочую область внутри ролика. Его я и так знаю. Он 1024х768. Но если его растянуть в браузере то он может быть иным, а Stage всегда вернет 1024х768. например в FireFox у меня сейчас рабочая область явой выводится как 1264х823, отресайзь я картинку на основании Stage, я получу ее более сплюснутой по вертикали, так как пропорции по высоте иные, ибо в браузере сверху куча обвесок в виде панелей.

Добавлено через 2 минуты
1)fljot - Хм... Ты хто таки? %)
2) Задача в том, что бы картинка отображалась максимально большого размера, тоесть под ширину экрана максимально приближено, при этом сохраняла пропорции независимо от попорций окна браузера.

На Stage.scaleMode = "noScale" натыкался при поиске... думал что не совсем это то что надо. Но щас попробую.

P.S.

Ну да. Мне то не нужно запрещать масштабирование. Мне нужно к нему превязаться...

Нужно зная размеры рабочей области браузера, загрузить картинку, задать ей внутри флешки ширину 1024, а высоту как то вычислить так, что бы растянутая или сплюснутая флешка вывела картинку пропорционально. Пол дня с 2мя программерами еще бьюсь, задача левая, но принцип отказаться не дает.

Все данные на руках. Есть внешние габариты обхекта флеша, есть внутринние (те что при разработке заданы), есть размеры картинки после ее загрузки. Есть размер картинки по ширине - который должен быть равен 100% ширине флешки (в моем случае 1024). Уже и не знаю как описать эту задачу %) Проблема в том, что никакой связи между внешними габаритами и внутренними размерами объектов во флеше нет


Последний раз редактировалось Shinoby; 23.04.2009 в 16:45.
Старый 23.04.2009, 16:43
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 7  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
возможно задача крайне специфическая, но обычно легче запретить масштабирование и контролировать размеры и позиции элементов.. почитай про резину, вопросы точно отпадут

RGP. flux.

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Я вас понял. Нужно рассчитывать каждый скейл для того, чтобы картинка сохраняла оригинальный размер и пропорции. Итак, размер флеш-ролика Вам известен из js. Решаем пропорцию.

pic._xscale = flash_width * 100 / 1024;
pic._yscale = flash_height * 100 / 768;

как вариант при Stage.scaleMode != "noScale":

pic._xscale = flash_width / Stage._width * 100;
pic._yscale = flash_height / Stage._height * 100;
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 23.04.2009 в 16:46.
Старый 23.04.2009, 16:48
Shinoby вне форума Посмотреть профиль Отправить личное сообщение для Shinoby Найти все сообщения от Shinoby
  № 9  
Ответить с цитированием
Shinoby
 
Аватар для Shinoby

Регистрация: Oct 2007
Сообщений: 60
Цитата:
Сообщение от dimarik Посмотреть сообщение
Я вас понял. Нужно рассчитывать каждый скейл для того, чтобы картинка сохраняла оригинальный размер и пропорции. Итак, размер флеш-ролика Вам известен из js. Решаем пропорцию.

pic._xscale = flash_width * 100 / 1024;
pic._yscale = flash_height * 100 / 768;

как вариант при Stage.scaleMode != "noScale":

pic._xscale = flash_width / Stage._width * 100;
pic._yscale = flash_height / Stage._height * 100;
ну про каждый скейл я не писал, (так как решал задачу передав параметры единажды при загрузке), но при каждом скейле просто замечательно. Щас попробую Вашу мысль.
Оригинальный размер сохранять не нужно. Картинка всегда должна быть на весь экран по ширине (ширина объекта в ХТМЛе 100%), ширина самой картинки внутри ролика тоже 100%. А вот высота ее должна быть пропорциональна ширине независимо от того какие пропорции в браузере.

Для полной аналогии могу сказать, что мне нужно получить то, что делает например ACDSee когда просматриваешь изображения включив режим масштабирования Fit Width. По ширине картинка всегда по размеру окна ACDSee (какое бы оно не было), а по высоте картинку можно скролить если она не влезает (но пропорции картинки всегда идеальны)

Добавлено через 16 минут
Цитата:
Сообщение от fljot Посмотреть сообщение
возможно задача крайне специфическая, но обычно легче запретить масштабирование и контролировать размеры и позиции элементов.. почитай про резину, вопросы точно отпадут

RGP. flux.
Я во флеше лох... Погодь.
А могу я задать флешку параметры так, что бы он не масштабировался вместе с окном браузера, но при этом занимал всю область в браузере? Как бы увеличивал свою область ролика, но не менял масштаб? Если ДА, то я решу эту задачу в 2 счета %)


Последний раз редактировалось Shinoby; 23.04.2009 в 16:56.
Старый 23.04.2009, 17:08
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 10  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
именно это я тебе и твержу. почитай в хелпе про класс Stage. Stage.scaleMode, Stage.align, Stage.onResize

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

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

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


 


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


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