Предыстория: используется в последних проектах
movable-view
Давайте сделаем функцию сортировки перетаскиванием.После завершения функции я тестирую ее на реальной машине.Обнаружено, что анимация перетаскивания имеет серьезное падение кадров на стороне Android. Проверьте Google и обнаружите, что есть такие же друзья, у которых похожие проблемы:Как решить проблему, из-за которой Android слишком зависает при перемещении и перетаскивании изображений апплета
Причины выпадения кадров
Например, на странице есть 2 элемента A и B. Пользователь делает жест touchmove на A и просит B проследить за движением.movable-view
является типичным примером. Процесс ответа на событие touchmove:
А. Событие touchmove выбрасывается из уровня представления (Webview) на уровень логики (служба приложений).
б. Логический уровень (служба приложений) обрабатывает событие touchmove, а затем изменяет позицию B через setData.
однаждыtouchmove
Ответ должен пройти2 связь между логическим уровнем и уровнем рендеринга и один рендеринг, время связи относительно велико. такжеsetData
Рендеринг также блокирует выполнение других скриптов., что приводит к задержке процесса анимации всего взаимодействия с пользователем.
По вышеуказанным причинам был запущен апплет WeChat.WXS(WX Script)
, его роль состоит в том, чтобы позволить логическому коду работать на уровне представления (Webview) и достичь цели оптимизации за счет сокращения количества передач данных между уровнем представления и логическим уровнем. Конкретная ссылка:WXSа такжеWXS реагирует на события
Практики оптимизации с использованием WXS в Taro
Предыстория: поскольку в настоящее время в Taro нет поддержки WXS (taro#2959), поэтому я не могу написать код WXS непосредственно в проекте и позволить Таро скомпилировать его в WXML для меня. Так что это должно быть реализовано с некоторыми хитростями, и я надеюсь, что Taro сможет поддерживать WXS в будущем.
Если вы используете собственную разработку апплета, вы можете обратиться напрямуюWXSа такжеWXS реагирует на событияЧтобы добиться, если это другие фреймворки, вы можете обратиться к этой статье для практики.
код перед оптимизацией
пройти до оптимизацииsetState
обновлять динамическиx,y
значения координат, чтобы использоватьmovable-view
для достижения эффекта перетаскивания.
оптимизировать
Сначала нужно удалитьmovable-view
компонент, потому что его нельзя использоватьmovable-view
а такжеWXS
уменьшить количество путей, по которым передаются данные, а во-вторыхmovable-view
это анимация, сделанная с помощью CSS, мы можем использоватьposition:absolute
вместо этого вWXS
Средние динамические настройкиtop&left
значение, достижениеmovable-view
Эффект.
Во-вторых, в соответствующем компоненте (используяWXS
каталог компонентов или страниц) для созданияmove.wxs
Файл сценария, используемый для динамической установки узлов, которые необходимо анимировать.top&left
Координатное значение.
Если вы обнаружите, что во время компиляции нет скомпилированного каталога компонентов
move.wxs
файл, вы можете обратиться кcopyнастроить. источникtaro#2959
Наконец, в соответствующемJSX
импортировать подmove.wxs
и сtouchmove
Привязка событий.
Проблемы с использованием Таро
На момент редактирования автором этой статьи Таро
WXS
Хорошей поддержки нет, и можно только сказать, что она едва достигает цели оптимизации частоты кадров с помощью WXS. Тем не менее, Taro также готов поддержать его, обратите внимание.taro#2959. Автор продолжит следитьTaro
правильноWXS
поддерживать прогресс.
в моем использованииWXS
Когда вам нужно использоватьcallMethod
сцена (ссылка:WXS реагирует на события), звонитьTaro
Согласно официальному руководству, метод, определенный в компоненте класса, нельзя использовать напрямую. Его нужно использовать очень уродливым образом, как показано ниже. В настоящее время конкретная причина неизвестна. Предполагается, чтоTaro
Методы, не привязанные к событиям, компилируются по-другому.
онлайн демо
После вышеуказанной оптимизации вAndroid
Плавность анимации перетаскивания на модели будет значительно улучшена. Вы можете отсканировать код апплета ниже, чтобы испытать его, процесс выглядит следующим образом:
-
Отсканируйте код апплета, чтобы войти в апплет
-
апплет входа в систему
-
На странице «Личная библиотека» отсканируйте штрих-код на обратной стороне книги, чтобы добавить несколько книг.
-
Перетащите после долгого нажатия на книгу