Функция или ошибка? 3D-перспектива в Flash Player 10 изменяется по мере добавления объектов на сцену - PullRequest
2 голосов
/ 27 января 2010

В моем приложении AS3 / Flash Player 10 на сцене появился мувиклип с настроенными собственными свойствами transform.perspectiveProjection; в частности, я явно устанавливаю projectionCenter так, чтобы он имел собственную точку схода (подробности см. в этом вопросе ). Я добавляю функциональность в свое приложение так, чтобы, если пользователь нажимает одну из кнопок вокруг преобразованного мувиклипа, слой лайтбокса появляется поверх 3D-трансформированного мувиклипа.

Проблема, с которой я столкнулся, заключается в том, что когда появляется слой лайтбокса, происходит заметное смещение в местоположении / преобразовании преобразованного мувиклипа, а когда слой лайтбокса удаляется, преобразованный мувиклип возвращается в исходное положение. Еще более странно, этот эффект происходит только примерно в половине случаев; обычно первая пара вызовов лайтбокса не имеет никакого эффекта, но третья или четвертая заставляет трехмерный видеоклип переместиться.

Нет никаких трехмерных элементов, которые являются частью лайтбокса (т.е. явно не установлены z-индексы), и я не могу найти документацию по этому явлению где-либо еще. Это ошибка в FP 10? Если это так, единственный обходной путь, о котором я могу подумать, - это сделать снимок 3D-трансформированного мувиклипа как bitmapData и показать его вместо 3D mc всякий раз, когда появляется лайтбокс, но это кажется неэффективным и жестоко хакерским. Есть мысли?

1 Ответ

4 голосов
/ 27 января 2010

Вот предположение - может ли добавленное содержимое располагаться в иерархии отображения, чтобы оно попадало в тот же битовый кэш, что и ваше 3D-содержимое? Как вы, вероятно, знаете, Flash реализует все эффекты растрового изображения, внутренне рисуя объект в растровом изображении, а затем применяя фильтр к растровому изображению, что включает искажение трехмерной перспективы. Я предполагаю, что когда вы добавляете содержимое в экранный объект, границы растеризуемой области изменяются, и это вызывает изменение в том, как ваш 3D-объект пикселируется. Опять же, это предположение, но вы можете поиграть с ним и посмотреть, является ли это виновником.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...