Я занимаюсь разработкой простого компонента пользовательского интерфейса кинетического меню для AIR for iPad.По сути, это легкий заполнитель для выпадающего списка, который соответствует стилю iOS.У меня есть спрайт, содержащий от 2 до 60 кнопок элементов, которые всплывают и позволяют вам пролистывать / прокручивать их, показывая только около 7 элементов в любой момент времени.
В моей первой попытке использовалась маска надмой спрайт, перемещая мой спрайт меню вверх и вниз под стационарной маской.Это дало слабые результаты на тестовом устройстве (<20 кадров в секунду).</p>
Затем я попробовал блиц-решение, оставив спрайт меню вне списка отображения и используя BitmapData.draw (), чтобы отобразить только ту часть списка, которая мне нужна была видимой.Это дало лучшие результаты на моей платформе Windows dev, но на этот раз частота кадров упала ниже 10 кадров в секунду на iPad.Я предполагаю, что на меня наложены налоговые нагрузки на процессор или штраф за повторное считывание GPU.Первоначально я надеялся, что смогу запустить мое приложение со скоростью 60 кадров в секунду, однако я увеличил свою цель до более скромных 30 кадров в секунду.
Это подводит меня к третьей попытке использования этого компонента пользовательского интерфейса с использованием маскирующей функции спрайта .scrollRect в сочетании с .cacheAsBitmap.Опять же, наблюдаемое поведение сильно отличается между AIR в Windows и iOS.В Windows он перерисовывает только часть спрайта меню, ограниченную размерами scrollRect, как и должно быть.С помощью iOS я могу касаться области экрана выше или ниже видимой области спрайта меню и по-прежнему перетаскивать меню, даже если мой палец находится над «пустым» пространством!Производительность здесь приличная, колеблется между (19 - 25 кадров в секунду) и почти наверняка будет идеальной при 30, если бы она работала так же, как и на Windows.
Есть ли у кого-нибудь какие-либо идеи относительно поведения функции scrollRect в AIR?для iOS или лучший способ реализации скользящего меню в собственном стиле iOS в AIR для iOS?
Обратите внимание, что вышеописанные методы были опробованы как в режиме CPU, так и в режиме GPU, но режим CPU работал значительно лучше.Я использовал AIR 2.7, установленный поверх Flash Pro CS 5.5, с FlashDevelop в качестве моей IDE.