#flash #actionscript-3 #papervision3d
#flash #actionscript-3 #papervision3d
Вопрос:
Я хочу оптимизировать производительность моей программы.
С места в карьер я установил качество сцены на среднее (если я установлю его на низкое, половина моих видеороликов не будет отображаться). Это помогло, но я хочу большего!!!
Подсказка, которую я прочитал в книге P3D Essentials, заключается в том, чтобы включать анимированные материалы, когда они не нужны. Фантастическая идея, но не объясняет, как.
Когда я создаю материал, который я могу установить material.animated = false
, и это работает, но в другой функции я не могу получить доступ к материалам моих примитивов. Что-то такое простое, как plane.material.animated = false
возвращает исключение null. Итак, как мне динамически включать / выключать анимированные материалы в моих примитивах?
Комментарии:
1. Проект PV3D мертв. Используйте Away3D.
2. Некоторые доказательства: unitzeroone.com/blog/2009/09/28/goodbye-papervision .
3. Вряд ли это доказательство. Ушел один из основной команды. Однако блог не обновлялся с июля 2010 года, а сайт разработчиков — с июня 2009 года. Код Google был обновлен в марте 2011 года… Я думаю, что взгляну на Away3D для своего следующего проекта, поскольку этот выполнен на 95%.
4. Это доказательство, потому что он был основным разработчиком. Конечно, кое-где что обновлялось, и они запускались в новой ветке, но, возможно, 2 парня комментируют код и т.д. Более 22 активных разработчиков, включая астрофизика из команды away3d, работают ежедневно. Еще одно доказательство: Papervision был практически ЕДИНСТВЕННЫМ движком Flash, который не был приглашен для участия в закрытой альфа-бета-версии molehill. Почему? Потому что Adobe тоже знает, что это, по сути, мертвый проект. 🙂
Ответ №1:
При просмотре API это кажется невозможным. Что я могу сделать для повышения производительности, так это удалить объекты, которые не видны, например, если плоскость полностью скрыта за другой плоскостью, тогда не показывайте (визуализируйте) ее. Это то, чего я пытался достичь с помощью моего первоначального вопроса…
Все мои плоскости хранятся в массиве.
//make all the planes invisible. Don't want to render them
for(var i = 0; i< planes.length(); i )
{
planes[i].visible = false;
}
//show the first plane so we have **something** to see
planes[0].visible = true;
У меня это работает, потому что я знаю, что одновременно будет видна только одна плоскость (пока она не перейдет на следующую плоскость, в этом случае я делаю эту плоскость видимой, а когда переход на текущую плоскость завершен, я ее скрываю).