![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Модрон-ветеринар
|
При наличии в системе двух мониторов свойство System.capabilities.screenResolutionY берется из свойств только того монитора, который указан в системе как основной, независмо от того, на какой монитор уведен браузер (когда видеокарта работает в режиме Dual View, то есть при независимой настройке мониторов). Обнаружилось опытным путем.
Это никак не победить, потому что связано с ее величеством системой? Может быть JavaScript умеет брать разрешение того дисплея, в котором в данный момент спозиционировано окно браузера? По обстоятельствам требуется вносить изменения в ролике в зависимости от разрешения монитора (при полноэкранном режиме). Последний раз редактировалось mooncar; 17.05.2010 в 22:28. |
|
|||||
|
Модрон-ветеринар
|
По поводу класса System я и сам это понял. Но, отвлекаясь от флеш, "система"-то знает, что у нее два монитора. Может быть JS умеет более глубоко в свойства системы проникнуть, хотя бы при посредничестве браузера?
При Dual View настройка мониторов независимая. Это же где-то должно отражаться. В идеале хотелось бы еще также, чтобы браузер мог узнать и как-то передать флешке, куда он выведен или развернут. Ведь многие приложения умеют узнавать это (например, обычные видеоплееры "знают", на какой монитор они выведены большей своей частью, когда начинают разворачиваться в полный экран. Да те же браузеры себя ведут так же). Последний раз редактировалось mooncar; 18.05.2010 в 03:15. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
javascript: screen.width, screen.height
IE6 - разрешение основного экрана, IE7 не могу проверить. Chrome, Safari, Firefox - разрешение текущего экрана. Можно попробовать проверить ширину окна браузера и сравнить со screen.width. Возможно System.capabilities.screenResolutionY тоже зависит от браузера. Последний раз редактировалось rainbowrussia; 17.05.2010 в 23:49. |
|
|||||
|
Модрон-ветеринар
|
Нет, System.capabilities.screenResolutionY зависит только от системы, насколько я понял, причем тут речь только о мониторе, прописанным в системе как основной, а не текущий.
Видимо нюанс составляет определить, какой, собственно, текущий. Сам браузер это как-то знает. (Как узнать, хотя бы с помощью JS, эту информацию от браузера?) Если растянуть браузер на два монитора, и нажать "Развернуть", он развернется в том мониторе, где оказалась расположенной большая его площадь. Поэтому сравнивать ширину окна браузера вообще не вижу смысла, она может быть любой, даже больше ширины монитора. А уж меньше-то запросто, если окно браузера не развернуто. Цитата:
По этому моменту я не нашел информации. В общем, если вкратце, мне нужно узнать разрешение "текущего" монитора. Браузер знает и какой сейчас текущий, и максимальные размеры (равное разрешению монитора), в пределах которых он может развернуться. Можно ли как-то получить эти данные? Добавлено через 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. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Цитата:
Я не совсем понял для чего вам нужны эти значения, поясните если не секрет плз. Ну и как крайний вариант узнать разрешение текущего монитора - развернуть фшелку на весь экран, прочитать Stage.width и Stage.height и свернуть обратно. Правда на каком из мониторов она развернется, возможно, тоже непредсказуемо. |
|
|||||
|
Модрон-ветеринар
|
Stage.width и Stage.height всегда постоянны и не зависят от разрешения монитора по горизонтали и вертикали, независмио от того, полноэкранный это режим или нет. Меняются размеры Stage только когда Stage.scaleMode установлено в noScale или при оперативной перепубликации флешки на странице с помощью JS . У меня не этот случай, у меня при разворачивании флешки в полный экран все по обычному масштабируется.
Пишу плеер. Нужно определять разрешение монитора, для того чтобы правильно позиционировать и масштабировать область видео и элементы меню в полноэкранном режиме. Например, меню должно быть "прилеплено" в полноэкранном режиме всегда к низу. Где низ? Допустим пропорции монитора одни, прекрасно, подгоним полноэкранное меню на сцене, где будет низ экрана. Но на другом мониторе в полноэкранном режиме все может стать иначе, так как пропорции монитора уже другие, в координатах монитора флешка на нем может стать больше или меньше, втискиваясь в экран! Она ведь в полноэкранном режиме всегда масштабируется так, чтобы сцена (Stage) поместилась полностью, касаясь либо верхнего и нижнего краев экрана, либо правого и левого края (как это получится - как раз зависит от пропорций экрана). Сцена может прилипнуть своими краями к правому или левому краю монитора, тогда ее высота сожмется, низ сцены поедет вверх (вместе с меню!), верхний край вниз. И наоборот, если сцена влезла в экран так, что прилепилась краями к верху и низу монитора, то она сожмется по ширине в координатах монитора. Для компенсации этого и нужно знать разрешение монитора, чтобы, например, меню всегда оставалось прилепленным к низу экрана. То есть некоторые нужные элементы (у меня это меню и область видео) нельзя фиксировать, если нужно добиться их постоянного положения по отношению к краям того или иного монитора в полноэкранном режиме. Что я и делаю. Сейчас все прекрасно работает, расчитывается верно, но только если не запускать или не перемещать страницу с флешкой на другой экран... А ведь сейчас два монитора - это не редкость, многие ставят второй и параллельно обычным занятиям смотрят на нем фильмы, делают что-то еще. Карточки все сейчас с двумя выходами... К нотбукам подключают внешние мониторы. И т.д. Последний раз редактировалось mooncar; 18.05.2010 в 03:19. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Вашу задачу понял, но... а зачем же такие сложности? Сделайте noScale, в случае переключения в полный экран установите _xscale и _yscale у визуальных элементов, а лучше их групп. Например, когда я делал видеоплеер, я в полноэкранном режиме устанавливал _xscale и _yscale у клипа, в котором был собран весь "низ" плеера (прогресс, плей, пауза, громкость, другие кнопки). При noScale мы точно будем знать разрешение, точно знаем размер всех элементов и нет проблем с подгонкой. В вашем случае все решения будут полумерами.
Ну или на случай если Scale необходим - думаю вот так можно узнать ширину флешки при переходе в полноэкранный режим: 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|