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

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

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

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

При наличии в системе двух мониторов свойство System.capabilities.screenResolutionY берется из свойств только того монитора, который указан в системе как основной, независмо от того, на какой монитор уведен браузер (когда видеокарта работает в режиме Dual View, то есть при независимой настройке мониторов). Обнаружилось опытным путем.
Это никак не победить, потому что связано с ее величеством системой? Может быть JavaScript умеет брать разрешение того дисплея, в котором в данный момент спозиционировано окно браузера?
По обстоятельствам требуется вносить изменения в ролике в зависимости от разрешения монитора (при полноэкранном режиме).


Последний раз редактировалось mooncar; 17.05.2010 в 22:28.
Старый 17.05.2010, 22:36
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Нет этого сделать нельзя. зависит от системы

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
По поводу класса System я и сам это понял. Но, отвлекаясь от флеш, "система"-то знает, что у нее два монитора. Может быть JS умеет более глубоко в свойства системы проникнуть, хотя бы при посредничестве браузера?
При Dual View настройка мониторов независимая. Это же где-то должно отражаться.
В идеале хотелось бы еще также, чтобы браузер мог узнать и как-то передать флешке, куда он выведен или развернут. Ведь многие приложения умеют узнавать это (например, обычные видеоплееры "знают", на какой монитор они выведены большей своей частью, когда начинают разворачиваться в полный экран. Да те же браузеры себя ведут так же).


Последний раз редактировалось mooncar; 18.05.2010 в 03:15.
Старый 17.05.2010, 23:39
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
В жаэсе ничего подобного не видал

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

Регистрация: Feb 2008
Сообщений: 560
javascript: screen.width, screen.height
IE6 - разрешение основного экрана, IE7 не могу проверить.
Chrome, Safari, Firefox - разрешение текущего экрана.

Можно попробовать проверить ширину окна браузера и сравнить со screen.width.

Возможно System.capabilities.screenResolutionY тоже зависит от браузера.


Последний раз редактировалось rainbowrussia; 17.05.2010 в 23:49.
Старый 17.05.2010, 23:55
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Нет, System.capabilities.screenResolutionY зависит только от системы, насколько я понял, причем тут речь только о мониторе, прописанным в системе как основной, а не текущий.
Видимо нюанс составляет определить, какой, собственно, текущий.
Сам браузер это как-то знает. (Как узнать, хотя бы с помощью JS, эту информацию от браузера?) Если растянуть браузер на два монитора, и нажать "Развернуть", он развернется в том мониторе, где оказалась расположенной большая его площадь.
Поэтому сравнивать ширину окна браузера вообще не вижу смысла, она может быть любой, даже больше ширины монитора.
А уж меньше-то запросто, если окно браузера не развернуто.
Цитата:
Сообщение от rainbowrussia Посмотреть сообщение
javascript: screen.width, screen.height
IE6 - разрешение основного экрана, IE7 не могу проверить.
Chrome, Safari, Firefox - разрешение текущего экрана.
А вот тут нельзя ли поподробнее - что подразумевается тут под "текущий"? Того, где расположена большая площадь браузера?
По этому моменту я не нашел информации.

В общем, если вкратце, мне нужно узнать разрешение "текущего" монитора. Браузер знает и какой сейчас текущий, и максимальные размеры (равное разрешению монитора), в пределах которых он может развернуться. Можно ли как-то получить эти данные?

Добавлено через 1 час 40 минут
Вот мои наблюдения.
Может быть кому-то полезно будет, как screen.width, screen.height определяют разрешение монитора при работе в различных браузерах:

1) Opera 10.53. Определяется разрешение для того монитора, в области которого стартовал браузер. Если браузер перенести и развернуть на другой монитор, эти данные не изменятся. Если окно перенести в другой монитор, закрыть Оперу и снова запустить (она откроется уже в новом мониторе), только тогда разрешение определится уже с новыми значениями. То есть браузер "текущим" тут считает тот монитор, в области которого он стартовал. Плохо.

2) IE 6.0. Ему все равно, где находится окно, и откуда он стартовал. При любом раскладе всегда выдается разрешение основного монитора (то есть того, которое определяется в свойствах "Экрана", "Параметры" как основной). Еще хуже.

2) FireFox 3.5.9. Правильно определяется разрешение именно текущего монитора, т.е. того, куда было перенесено окно либо где расположена большая площадь браузера. Причем неважно, в каком мониторе был стартован FF. Отлично!

Других браузеров под рукой не нашлось.

Ввыоды. В общем, все грустно. Передать флешке актуальную информацию, какое разрешение выставлено именно в том мониторе, где она открыта сейчас, я так и не понял - можно ли в принципе как-то организовать. Только один FF ведет себя корректно при вызове соответствующих функций JS.
______________________
К чему это все? Дело в том, что сейчас я пишу видеоплеер и нужно определять разрешение монитора, для того чтобы правильно позиционировать и масштабировать видео и элементы меню в полноэкранном его режиме.


Последний раз редактировалось mooncar; 18.05.2010 в 01:50.
Старый 18.05.2010, 02:15
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 7  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Цитата:
Сообщение от mooncar Посмотреть сообщение
что подразумевается тут под "текущий"? Того, где расположена большая площадь браузера?
Да, где браузера "больше", получается так.

Я не совсем понял для чего вам нужны эти значения, поясните если не секрет плз.

Ну и как крайний вариант узнать разрешение текущего монитора - развернуть фшелку на весь экран, прочитать Stage.width и Stage.height и свернуть обратно. Правда на каком из мониторов она развернется, возможно, тоже непредсказуемо.

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Stage.width и Stage.height всегда постоянны и не зависят от разрешения монитора по горизонтали и вертикали, независмио от того, полноэкранный это режим или нет. Меняются размеры Stage только когда Stage.scaleMode установлено в noScale или при оперативной перепубликации флешки на странице с помощью JS . У меня не этот случай, у меня при разворачивании флешки в полный экран все по обычному масштабируется.

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

Например, меню должно быть "прилеплено" в полноэкранном режиме всегда к низу. Где низ? Допустим пропорции монитора одни, прекрасно, подгоним полноэкранное меню на сцене, где будет низ экрана. Но на другом мониторе в полноэкранном режиме все может стать иначе, так как пропорции монитора уже другие, в координатах монитора флешка на нем может стать больше или меньше, втискиваясь в экран! Она ведь в полноэкранном режиме всегда масштабируется так, чтобы сцена (Stage) поместилась полностью, касаясь либо верхнего и нижнего краев экрана, либо правого и левого края (как это получится - как раз зависит от пропорций экрана).

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

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

Что я и делаю. Сейчас все прекрасно работает, расчитывается верно, но только если не запускать или не перемещать страницу с флешкой на другой экран...
А ведь сейчас два монитора - это не редкость, многие ставят второй и параллельно обычным занятиям смотрят на нем фильмы, делают что-то еще. Карточки все сейчас с двумя выходами... К нотбукам подключают внешние мониторы. И т.д.


Последний раз редактировалось mooncar; 18.05.2010 в 03:19.
Старый 18.05.2010, 05:26
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 9  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Вашу задачу понял, но... а зачем же такие сложности? Сделайте noScale, в случае переключения в полный экран установите _xscale и _yscale у визуальных элементов, а лучше их групп. Например, когда я делал видеоплеер, я в полноэкранном режиме устанавливал _xscale и _yscale у клипа, в котором был собран весь "низ" плеера (прогресс, плей, пауза, громкость, другие кнопки). При noScale мы точно будем знать разрешение, точно знаем размер всех элементов и нет проблем с подгонкой. В вашем случае все решения будут полумерами.

Ну или на случай если Scale необходим - думаю вот так можно узнать ширину флешки при переходе в полноэкранный режим:

Код AS1/AS2:
var sm = Stage.scaleMode;
Stage.scaleMode = 'noScale';
trace(Stage.width);
Stage.scaleMode = ns;
По крайней мере в среде разработки код:

Код AS1/AS2:
Stage.scaleMode = "Scale";
 
onEnterFrame = function () {
	var sm = Stage.scaleMode;
	Stage.scaleMode = 'noScale';
	trace(Stage.width);
	Stage.scaleMode = ns;
}
работает, содержимое масштабируется, ширина выводится в зависимости от того на сколько окно растянули и изображение не дергается. А в вашем случае onEnterFrame, конечно, не нужен и переключать scaleMode можно и нужно реже.


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

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

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


 


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


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