小程序中實現(xiàn)手電筒

實現(xiàn)原理

通過小程序組件 <camera> 中的 flash 屬性的控制實現(xiàn)后置閃光燈的打開與關(guān)閉

頁面部分

注意:mode="scanCode" 只有掃碼模式才能準(zhǔn)確控制閃光燈的開關(guān)

/* flashlight.wxml */
<view class="lightBox">
    <view class="topBtn">
        <view bindtap="changeType" data-type="flash" class="flash btnItem {{ activeType == 'flash' ? 'active' : '' }}">閃光</view>
        <view bindtap="changeType" data-type="sos" class="sos btnItem {{ activeType == 'sos' ? 'activeRed' : '' }}">SOS</view>
    </view>
    <view bindtap="changeType" data-type="light" class="lightClose {{ activeType == 'light' ? 'active' : '' }}">
        <text class="iconfont icon-close"></text>
    </view>
        <!-- 注:mode="scanCode" 只有掃碼模式才能準(zhǔn)確控制閃光燈的開關(guān) -->
    <camera wx:if="{{ showCamera }}" resolution="low" mode="scanCode" flash="{{ flash }}" class="camera"></camera>
</view>
邏輯處理部分

1.因防止打開子頁面加載攝像頭會延遲卡頓,所以暫時通過 showCamera 進(jìn)入頁面不立即進(jìn)行加載,提升流暢度。

/* 延遲加載攝像頭, 防止進(jìn)入頁面時卡頓 */
  onLoad: function (options) {
    pageUtil.setNavBar(options)
    setTimeout(() => {
      this.setData({
        showCamera: true
      })
    }, 1000);
  },

2.切換開關(guān)控制

  toggleLight(value) { // 切換開關(guān)
    this.setData({
      flash: value ? value : (this.data.flash === 'off' ? 'on' : 'off')
    })
  },
效果體驗,歡迎掃碼使用或微信小程序搜索 - "辛巴達(dá)盒子"
辛巴達(dá)盒子
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容