Перейти к содержанию
Fire Monkey от А до Я
  • 0

В моем случае при использовании 3D формы и ряда TLayer3D не удается нажать на 2D контрол


antarey

Вопрос

Помогите разобраться в вроде элементарной задаче. Для андроида  хочу сделать меню.

Есть 3Д форма - на ней 3 TLayer3D

Layer3D1->Align = Left
Layer3D2->Align = Client
Layer3D3->Align = None

На Layer3D2 поместил тулбар а на него уже спид бутон

Вот код 

  Layer3D3->Visible = ! Layer3D3->Visible;
   if (Layer3D3->Visible)
   {
       Layer3D2->SendToBack();
       Layer3D3->BringToFront();
       ListBox1->ApplyStyleLookup();
       ListBox1->RealignContent();
   } else {
       Layer3D3->SendToBack();
   }

Мое меню Layer3D3 с листбоксом появляется, но не могу нажимать на итемы

 

если

Layer3D2->Visible = false;

то итемы нажимаются

Что я не доделываю

Project1.zip

Изменено пользователем Brovin Yaroslav
Отформатировал код
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы
  1. Рабочее решение, сбросить HitTest в False для слоев. Они перехватывают события.
  2. Для 3D объектов BringToFront и BringToBack не работают так, как вы ожидаете. Поскольку у 3D объектов это положение зависит от точки наблюдения. Вместо этого в вашем случае нужно использовать ось Z.

Зачем для 2D интерфейса использовать 3D форму?

 

Это не оправдано. Отмечу, что выбор использования 2D или 3D формы зависит от вашего варианта использования. Например:

  1. 2D форма. Когда преобладающая часть контролов - это 2D контролы. Чтобы использовать 3D объекты, используйте встроенные TViewPort3D. Если нужны 3D эффекты в редких случаях, то проще на момент создания эффекта добавить в корень формы TViewPort3D с TLayer3D, затем перенести туда все ваши контролы. выполнить эффекты и восстановить обратно. В этом случае не будет и проблем с нажатием в 3D форме. 
  2. 3D форма. Все тоже, что и в 2D форме только со знаком минус.
Ссылка на комментарий
  • 0

как раз из за эффектов и выбирал 3д - у 2д нет возможности реализовать переворот по оси Y, я игрался со свойством RotationAngle.Y.

Чтобы не нарушать правил скажите да или нет, если да то создам новую тему - есть возможность в 2д режиме реализовать переворот по оси Y без заморочек с TViewPort3D с TLayer3D? что-то мне кажется что будет мерцание в момент переноса контролов

Ссылка на комментарий
  • 0
  • Администраторы

Посмотрите пример ControlsDemo, внизу есть кнопка, которая переводит интерфейс в 3D и крутит его. После возвращения переводит его обратно в 2D.

 

Да и обратите внимание на отсутствие мерцания.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...