Анимация NativeScript запускается только один раз

#android #angular #nativescript

#Android #angular #nativescript

Вопрос:

У меня есть проект NativeScript, который содержит ListView. Я использовал его событие «onItemTap», и это функция, которую я написал:

    onItemTap(args){
      let clicked = args.view.bindingContext;
      let fav = this.page.getViewById("star-" clicked.id);
      fav.animate({
          rotate: 360,
          duration: 1000
      });

    }
  

По сути, я извлекаю элемент, на который я нажал, внутри элемента есть метка с идентификатором "star-N" [N — это intex элемента], и я его анимирую.
Это работает нормально, проблема в том, что это работает только один раз! Со второго нажатия она больше не анимируется. Консоль не возвращает никаких ошибок. Я использую свое Android-устройство для его отладки.

Есть идеи? Спасибо!

Ответ №1:

По-видимому, после поворота свойство элемента «rotate» не сбрасывается до его начального значения. Это означает, что при первом нажатии ваше свойство поворота переходит с 0 => 360, а затем при втором нажатии с 360 => 360, поэтому анимация не происходит.

Не уверен, действительно ли это так, но вы всегда можете вручную установить для свойства rotate значение 0 после завершения анимации:

 onItemTap(args) {
    let clicked = args.view.bindingContext;
    let fav = this.page.getViewById("star-" clicked.id);
    fav.animate({
        rotate: 360,
        duration: 1000
    }).then(() => fav.rotate = 0);
}
  

Комментарии:

1. Черт возьми, я думал, что метод «анимировать» повлиял на элемент только временно! Я не думал, что он мог бы установить свойство «повернуть» на 360! Спасибо! Не могли бы вы сказать мне, где находятся свойства представления, перечисленные в документах NativeScript?