Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос про первый план видимости (http://www.flasher.ru/forum/showthread.php?t=213058)

Egstond 23.06.2016 14:16

Вопрос про первый план видимости
 
Всем доброго времени суток, у меня есть Stage3D с контекстом, в которых отображается 3д графика. (в некоторых терминах могу ошибиться). И еще есть отдельно Bitmap добавленный AddChildом, так вот этот Bitmap всегда на первом плане, как его убрать на второй план чтобы он не загораживал окно с 3д графикой ?

Tails 23.06.2016 14:21

2д графика всегда отображается выше Stage3D. Если вам надо скрыть 2д элемент, воспользуйтесь свойством visible этого элемента или просто уберите его из дисплей листа.

СлаваRa 23.06.2016 14:21

перенести его рендеринг на Stage3D

KBAC 23.06.2016 14:22

Дисплей лист находится выше stage3d.

Единственный способ - загрузить битмап в текстуру и отрисовывать на stage3d


к-к-к-комбо!

Egstond 23.06.2016 14:55

Это плохо, оба предложенных способа не подходят.. Потому что суть Bitmap в том чтобы забить пустоты между 3Д графикой и остальным пустым окном, 3д графика имеет фиксированный размер чтобы не плыло качество, а если разрешение монитора больше, то будут пустоты, которые и планировалось забить Bitmap, поэтому рендерить Bitmap в 3д окне - не подойдет, также как и по очереди их отображать не одновременно..

Tails 23.06.2016 14:56

Ну тогда придётся это решать в рамках stage3D, опустить то Bitamp ниже 3д графики невозможно.

Egstond 23.06.2016 15:08

Цитата:

Сообщение от Tails (Сообщение 1195081)
Ну тогда придётся это решать в рамках stage3D, опустить то Bitamp ниже 3д графики невозможно.

А можно второй Stage сделать типа как фоновый и туда картинку, можно будет второй Stage поместить на задний план, относительно первого ?

faraday 23.06.2016 15:34

можете одновременно использовать starling для 2d и away для 3d

Tails 23.06.2016 15:42

Просто загрузите битмапу в stage3D и расположите там как вам нужно.
Какой вы используете фреймворк? Не голое же у вас stage3D?

Egstond 23.06.2016 16:55

Цитата:

Сообщение от faraday (Сообщение 1195083)
можете одновременно использовать starling для 2d и away для 3d


можете подробнее что это такое ?

Цитата:

Сообщение от Tails (Сообщение 1195084)
Просто загрузите битмапу в stage3D и расположите там как вам нужно.
Какой вы используете фреймворк? Не голое же у вас stage3D?

stage допустим 500на500(фиксированный), а отображение всего в полноэкранном режиме допустим 1024на768, получается маленький экран с финишной графикой и пустота вокруг, вот битмап для того чтобы пустоту убрать, его нет смысла внутри этого окошка рисовать, снаружи надо каким-то способом, конечно можно аппликацию из 4х кусков сводить вокруг stage, но может по проще что есть. Использую CS6

Tails 23.06.2016 17:11

Сделайте чтоль пример какой простенький, для демонстраций проблемы. Может быть, так вам быстрее помогут.

Egstond 23.06.2016 17:19

Вложений: 1
Цитата:

Сообщение от Tails (Сообщение 1195087)
Сделайте чтоль пример какой простенький, для демонстраций проблемы. Может быть, так вам быстрее помогут.


Вот картинка. Проблема в пустоте, которая выглядит некрасиво. Пришла в голову идея, поставить фон-картинку, но она закрывает рабочее окно.

Tails 23.06.2016 17:28

Всё очень просто:
  1. Выставляем stage.align в StageAlign.TOP_LEFT.
  2. Выставляем stage.scaleMode в StageScaleMode.NO_SCALE.
  3. Подписываемся на событие RESIZE
  4. Один раз в начале и далее по событию ресайза позицианируем и масштабируем контент так как нам нужно.

Бэграунд растяните или зарепитите, основной контент отпозицианируйте по центру.
Нужные разделы справки:
http://help.adobe.com/ru_RU/FlashPla...html#scaleMode
http://help.adobe.com/ru_RU/FlashPla...age.html#align
http://help.adobe.com/ru_RU/FlashPla...tageAlign.html
http://help.adobe.com/ru_RU/FlashPla...ScaleMode.html

пс. Всё это нужно делать в рамках stage3D.

Egstond 23.06.2016 17:36

Цитата:

Сообщение от Tails (Сообщение 1195089)
Всё очень просто:
  1. Выставляем stage.align в StageAlign.TOP_LEFT.

  1. Зачем? Мне не нужно чтобы stage была в левом углу, она должна быть в центре, как и есть на картинке, проблема в пустоте, а не в расположении stage.
    Цитата:

    Сообщение от Tails (Сообщение 1195089)
  2. Выставляем stage.scaleMode в StageScaleMode.NO_SCALE.

  3. Как я и писал Stage фиксирована уже, она не изменяется не при каких обстоятельствах.

    Цитата:

    Сообщение от Tails (Сообщение 1195089)
  4. Подписываемся на событие RESIZE
  5. Один раз в начале и далее по событию ресайза позицианируем и масштабируем контент так как нам нужно.

Цитата:

Сообщение от Tails (Сообщение 1195089)
Бэграунд растяните или зарепитите, основной контент отпозицианируйте по центру.
Нужные разделы справки:

пс. Всё это нужно делать в рамках stage3D.

Ну вот мне нужно чтобы фон был сзади, а он лезет вперед.. Может я не совсем понял что вы имеете в виду..

Tails 23.06.2016 17:44

Растягиваете stage3D на весь экран, при ресайзе (изменений размеров), переопределяете размеры stage3D заново, под новые размеры. Он не должен быть в левом углу, он должен заполнять всё поле видимости, которое в данный момент отображается.
Фон должен быть сделан внутри stage3D, фон и всё остальное позицианируется по событию ресайза.

Egstond 23.06.2016 17:47

Опять же проблема в том что его нельзя масштабировать, потому что идет потеря качества. Поэтому фон нужно как то запихать вокруг, может не битмапом, можно вторую фоновую stage сделать ?

Tails 23.06.2016 17:59

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

Egstond 23.06.2016 18:08

я не упоминал полноэкранный режим ? Речь именно о нем, в оконном то и пустоты оприори нету..


напомню еще раз суть проблемы
Цитата:

stage допустим 500на500(фиксированный), а отображение всего в полноэкранном режиме допустим 1024на768, получается маленький экран с финишной графикой и пустота вокруг, вот битмап для того чтобы пустоту убрать, его нет смысла внутри этого окошка рисовать, снаружи надо каким-то способом, конечно можно аппликацию из 4х кусков сводить вокруг stage, но может по проще что есть.

Tails 23.06.2016 18:38

Не имеет значения, переходите вы в полно экранный режим или просто растягиваете окно мышкой. При любом ресайзе, нужно выполнить ряд простых шагов:
  1. Получить событие изменения размеров окна. (Растянули мышкой, перешли в фулл скрин)
  2. Обновить размеры вью порта stage3D при помощи configureBackBuffer, передав туда новые width и height сцены.
  3. Позицианировать основной контент в stage3D по центру экрана.
  4. Обновить битмап бэграунда.
Всё!
На каком этапе у вас возникают сомнения?

Termer 23.06.2016 19:15

http://away3d.com/tutorials/Away3D_a...Interoperation

Egstond 23.06.2016 20:57

Цитата:

Сообщение от Tails (Сообщение 1195095)
Не имеет значения, переходите вы в полно экранный режим или просто растягиваете окно мышкой. При любом ресайзе, нужно выполнить ряд простых шагов:
  1. Получить событие изменения размеров окна. (Растянули мышкой, перешли в фулл скрин)
  2. Обновить размеры вью порта stage3D при помощи configureBackBuffer, передав туда новые width и height сцены.
  3. Позицианировать основной контент в stage3D по центру экрана.
  4. Обновить битмап бэграунда.
Всё!
На каком этапе у вас возникают сомнения?

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

Tails 24.06.2016 01:58

Я плохие советы давать не буду. Думаю, что обрезать контент по нужной рамке будет очень просто. На ум приходит предварительный рендер в отдельную текстуру фиксированного размера, но наверное есть даже способ и еще проще. Просто надо погуглить по stage3d mask. Вообще, если использовать какой нибудь фреймворк, например старлинг, то будет совсем лафа. Там все эти элементарные вещи уже реализованы.

Egstond 24.06.2016 02:42

ок, спасибо


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

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