index.wxml
<swiper
vertical
circular
class="swiper"
easing-function="linear"
current="{{rootIndex}}"
bindchange="onSwiperChange"
data-time="{{lastTapTime}}"
bindtap="doubleClick"
duration="{{300}}"
>
<swiper-item
wx:for="{{lives}}"
wx:key="liveId"
class="swiper-item"
>
<live-player-wrapper
live="{{item}}"
initialized="{{initialized}}"
isActive="{{rootIndex === index}}"
definition="{{definition}}"
videoQualityInfo="{{videoQualityInfo}}"
protocols="{{protocols}}"
definitions="{{u.getDefinitions(lives, rootIndex, protocols)}}"
bind:onDefinitionItemClick="onDefinitionItemClick"
/>
</swiper-item>
</swiper>
live-player-wrapper.wxml
<live-player
wx:if="{{isActive}}"
muted='{{false}}'
object-fit='fillCrop'
src='{{playerSource}}'
mode='live'
class="full-screen"
autoplay
picture-in-picture-mode="{{['push']}}"
bindstatechange="onStateChange"
binderror="onError"
/> 就这个简单的代码,判断 rootIndex === index 展示live-player,我打印rootIndex, index都没问题,
就是滑动切换的时候,上一个live-player 也不会被销毁,一直切换,一直都不销毁,就鸿蒙小程序是这样,这很简单的代码,
还有就是,有live-player容器,如果swiper-item 或者父容器有点击事件,鸿蒙小程序点击事件也会失效,问题太多了