Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Тонкости FlashPlayer или баг размеров? (http://www.flasher.ru/forum/showthread.php?t=144743)

switcher! 20.09.2010 12:28

Тонкости FlashPlayer или баг размеров?
 
Имеем код:
Код AS3:

//========constructor====
var s:Sprite = new Sprite();
s.graphics.beginFill(0);
s.graphics.drawCircle(200, 200, 200);
 
super.addChild(s);
trace(super.getBounds(this), super.transform.pixelBounds);

Имеем размеры stage: 800 (stageWidth) и 1200 (stageHeight).

Что же выдает нам трейс:
(x=0, y=0, w=400, h=400) (x=70, y=0, w=330, h=330)

Визуально размер круга соответствует второму Rectangle. Отступ в 70 пикселей также имеется. Погрешность начинается от 993 пикселей в высоту.
Изменение stageWidth также вызывает погрешность, только размер для появления погрешности больше.

Это как понимать? И проявляется ли подобное еще у кого-то ?

Zebestov 20.09.2010 13:25

stage.scaleMode = StageScaleMode.NO_SCALE ничего не меняет?

switcher! 20.09.2010 13:53

меняет...
(x=0, y=0, w=400, h=400) (x=0, y=-105, w=400, h=400)
При этом stageHeight превращается в 990. Хотя до NO_SCALE отдавала честные 1200.
А круг уползает вверх. Полагаю, на эти самые 105 пикселей.

Zebestov 20.09.2010 14:02

у тебя разрешение 1440х990?

Добавлено через 2 минуты
и флэшка выравнивается к тому же посередине (по вертикали)? сам посчитаешь? ;)

switcher! 20.09.2010 14:16

Цитата:

Сообщение от Zebestov (Сообщение 937258)
у тебя разрешение 1440х990?

1280x1024

Цитата:

Сообщение от Zebestov (Сообщение 937258)
и флэшка выравнивается к тому же посередине (по вертикали)?

если посередине экрана монитора (по высоте), то нет.

Цитата:

Сообщение от Zebestov (Сообщение 937258)
сам посчитаешь? ;)

судя по всему, считать уже не надо? :)

UPD: да, очевидно, флэшка в этом случае все же привязана к экрану. По крайней мере:
1) Изменение высоты в пределах "зоны погрешности" не уменьшает ноу_скельную высоту. Но тут удивляет почему погрешность начинается с 993-х, а высота упирается в 990.
2) Убирание/восстановление виндовой нижней панели изменяет stageHeight. При чем изменяет в два этапа (если два раза и более убирать/восстанавливать панель). Первое значение - 972, второе - 948. И, собственно, Rectangle скачет соответственно.

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

Zebestov 20.09.2010 14:22

ну смотри какая магия чисел выходит:

stageHeight стал 990 — это потому что ты свою флэху, которая хочет быть 1200 по высоте как-то втулил в 990 по высоте и при этом NO_SCALE. тут все понятно — ищи почему у тебя высота урезается до 990.

дальше. 105 — это как-то очень половина от 1200-990, что говорит о том, что флэшка выступает в равной мере как снизу так и сверху, отчего у тебя твой шарик и снесло на 105 точек вверх.

а уже почему вся эта логика имеет место быть — разбирайся по месту.

switcher! 20.09.2010 14:41

насчет половинных значений - тоже приметил. Но это точно никак не связано с расположением самой флэхи.

Цитата:

флэшка выступает в равной мере как снизу так и сверху
Если ты про рабочую область самого FlashPlayer, то да. Вопрос в том, почему она выступает?
Если ты про окно самого плеера, то нет. Он "залазит" только вниз, а до верха экрана не достает прилично.

Цитата:

а уже почему вся эта логика имеет место быть — разбирайся по месту.
а в чем разбираться ? Это проявляется, если в в пустой документ-класс вставить вышенаписанные строчки и установить соответствующие размеры stage (видимо, для каждого разрешения свои размеры - писал выше).
Сорсы FlashPlayer и Windows искать? )))

Zebestov 20.09.2010 15:12

все это интересно конечно, но ты пробовал сделать самое очевидное — вставить эту флэшку в HTML документ, который заботливо предоставляет твоему мувику его желанные 1200px по высоте? или ты это не для сайта делаешь (такое себе десктоп апп с высотой 1200px)

switcher! 20.09.2010 16:15

в браузере-то все ок. Однако, это же не дело, что в standalone своя разметка, в плагине - своя.
Имо, это кочка на ровном месте. Потому что надо вытаскивать из Capabilities тип плеера, и если плагин - то все остается как было, а если стэндэлоун - крутись как хочешь. Еще и не известно доподлинно: что от чего пляшет. Понятно, что от экранного разрешения и, видимо, системных панелей. Но это все на уровне дурдома.

Zebestov 20.09.2010 16:22

Цитата:

Сообщение от switcher! (Сообщение 937298)
в браузере-то все ок. Однако, это же не дело, что в standalone своя разметка, в плагине - своя.
Имо, это кочка на ровном месте. Потому что надо вытаскивать из Capabilities тип плеера, и если плагин - то все остается как было, а если стэндэлоун - крутись как хочешь. Еще и не известно доподлинно: что от чего пляшет. Понятно, что от экранного разрешения и, видимо, системных панелей. Но это все на уровне дурдома.

не годится свою неспособность организовать рабочее пространство внутри FP при произвольном разрешении иносказательно перекидывать на головы разработчиков ;) они предоставили достаточно средств для позиционирования экранных объектов в любых условиях.

switcher! 20.09.2010 16:56

не путайте: необходимость мириться с написанием костылей для элементарных вещей, и желание получить ожидаемое поведение от вполне конкретных действий. :)

Zebestov 20.09.2010 17:01

каких костылей? т.е. теперь сделать нормальный код по выравниванию контента — это уже "костылять"? :quiet:

switcher! 20.09.2010 17:17

А по-твоему, для операции:
Код AS3:

someDisplayObject.x = 100;

(ожидая от нее ровно то, что написано) писать "код по выравниванию", только потому что стэндэлоун плеер "пляшет" от разных переменных данных из ОС -- это нормально?
Если так, то мы с тобой сильно расходимся в мнениях. )

А добавим сюда факт того, что и размеры компонентов тоже изменяются от этих свистоплясок. Но конечно же, мы все можем уладить с помощью scaleX/Y, отрисовкой большей площади скина, etc... Замечательно.

Zebestov 20.09.2010 17:39

Да что за демагогия!
Ты делаешь приложение, которое имеет фиксированный размер, превосходящий "высоту" монитора (выше среднего, кстати). Кто тебя научил так делать? Так мало того — ты еще за лишний труд почитаешь расставить элементы интерфейса (или что там у тебя) согласно особенностям среды 0о

Прекращай эти недовольства, бо еще немного, и ты обидишься на Adobe за отсутствие в фотошопе кнопки "Сделать превосходно!"

i.o. 20.09.2010 17:56

Zebestov, поосторожнее с высказываниями, а то, как и мне, влепят за безобидную фразу +1

Zebestov 20.09.2010 18:01

Ну я именно памятуя о плюсиках максимально укрыл. Тем более, что это ж классика!

P.S.
а что такого в слове "превосходно"? ;)

switcher! 20.09.2010 18:22

Цитата:

Сообщение от Zebestov (Сообщение 937327)
Да что за демагогия!
Прекращай эти недовольства, бо еще немного, и ты обидишься на Adobe за отсутствие в фотошопе кнопки "Сделать п#####о!"

не нервничай :). Не знаю как на Украине, а у нас погода хорошая, солнечная.

Цитата:

Сообщение от Zebestov (Сообщение 937327)
Ты делаешь приложение, которое имеет фиксированный размер

Откуда эта неверная информация? Пример - это только пример. Я делаю компоненты, которые основаны на абсолютных данных своего содержимого, которые в свою очередь основанны на данных выдаваемых средой исполнения. Если я ставлю компонент в определенные координаты, я расчитываю, что он и должен быть в этих координатах, а в не в некоем произведении/усреднении/делении/... факторов, зависящих от экранного разрешения, тонкостей ОС (вероятно не без этого) и, OMG, системных панелей.

Представь ситуацию:
Тебе подарили микроволновую печь. И все бы хорошо, но вот незадача: функция "гриль" не работает весной во время таяния снегов. Точных сроков нет. Примерно в начале/середины весны. Как повезет.
Разумеется дареному коню в зубы не смотрят. Есть проволочка, паяльник и умелые руки.
Разница между нашими мнениями лишь в том, что я считаю это ненормальным.

Zebestov 20.09.2010 18:43

Цитата:

Сообщение от switcher! (Сообщение 937345)
не нервничай :). Не знаю как на Украине, а у нас погода хорошая, солнечная.

отставить троллизм с нотками перехода на национальности :cool:


Цитата:

Сообщение от switcher! (Сообщение 937345)
Откуда эта неверная информация? Пример - это только пример.

пример отражает подход. с таким подходом ты будешь делать красочно описанные тобой микроволновки.
Цитата:

Сообщение от switcher! (Сообщение 937345)
...если я ставлю компонент в определенные координаты, я расчитываю, что он и должен быть в этих координатах, а в не в некоем произведении/усреднении/делении/... факторов, зависящих от экранного разрешения, тонкостей ОС (вероятно не без этого) и, OMG, системных панелей.

тогда бросай это дело прямо уже — тут надо либо правильно, либо никак.

Еще раз по теме — твой подход и твое мнение ошибочны. Добавить нечего... ну разве что мне не удалось воспроизвести твою проблему — ровная флэха выходила с шариком на своем месте в любом контексте.

Отписываюсь от бессмысленной темы про несуществующие "проблемы".

switcher! 20.09.2010 21:09

Цитата:

Сообщение от Zebestov (Сообщение 937352)
ну разве что мне не удалось воспроизвести твою проблему — ровная флэха выходила с шариком на своем месте в любом контексте.

эта информация - ценная. Примерно то, что я и хотел услышать. За это, спасибо.

Однако данная тенденция рассматривалась на трех компьютерах с разными операционными системами, разными версиями FlashPlayer (речь только о standalone) и разными сборками SDK. И везде она (тенденция) прослеживалась.
Единственное, все мониторы были формата 4:3 (или 5:4, не знаю как правильно) и нормально работали на соответствующем разрешении экрана. Но я не думаю, что это важно.

P.S. а насчет "ноток" и "национальности" - зря так думаешь.


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

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