《從0到1上線微信小遊戲》第十二節 實現截圖和保存到相冊功能

第十二節 實現截圖和保存到相冊功能

新建節點

截圖功能

保存到相冊


在這一小節中,我們將通過調用微信小遊戲API來給俄羅斯方塊這個遊戲加上截圖和保存到相冊這兩個功能。

如果大家還需要實現截圖後的預覽功能的話,可以去看下筆者的這一篇教程

 

新建節點

首先在層級管理器中新建一個按鈕節點,命名爲camera:

添加按鈕背景圖片後,使用Widget組件進行佈局:

 

 

截圖功能

我們只需要調用canvas.toTempFilePath或者canvas.toTemFilePathSync接口就可以輕鬆實現截圖功能,後者是前者的同步版本。

 

微信開發文檔上已經詳細給出了該接口的參數信息,我們只需要修改x,y,width和height這幾個參數的值,就可以截取屏幕上任意大小區域:

 

現在我們在資源管理器中新建一個ScreenShot.js腳本,將其掛載到camera按鈕上:

編寫一個takePhoto方法:

takePhoto() {
    if (typeof wx === 'undefined') {
        return;
    }

    // 獲取當前屏幕截圖,參數請參照文檔自己設置
    let tempFilePath = canvas.toTempFilePathSync({
        x: 0,
        y: 0,
        fileType: 'jpg',
        quality: '1'
    });
}

1. 筆者這裏使用了同步版本。

2. width和height都沒有設置,使用默認值,也就是說截取全屏。

3. 修改fileType和quality參數可以減少截取圖片的大小。

 

就這麼簡單,現在你已經有了截取圖片的路徑tempFilePath,你可以使用該變量將圖片以一定的形式顯示到遊戲屏幕上(比如說放在一個相框裏)。或者就拿來傳給保存到相冊的接口中。

 

保存到相冊

實現保存到相冊這一功能也很簡單,只需調用wx.saveImageToPhotosAlbum這個API就行了。不過在調用這個API之前,我們必須確保已經獲得了相冊寫入的權限。

 

在takePhoto方法中添加如下代碼:

takePhoto() {
    ...

    wx.authorize({
        scope: 'scope.writePhotosAlbum',   // 需要獲取相冊權限
        
        success: (res)=>{     
            // 將截圖保存到相冊中
            wx.saveImageToPhotosAlbum({
                filePath: tempFilePath,
                success: (res)=>{
                    wx.showToast({
                        title: '圖片保存成功',
                        icon: 'success',
                        duration: 2000
                    });
                },
                fail: (res)=>{
                    console.log(res);
                    console.log('圖片保存失敗');
                }
            });
        },

        fail: (res)=>{
            console.log('授權失敗');
        }
    });
}

1. 我們首先調用wx.authorize接口來獲取相冊寫入權限,scope值爲'scope.writePhotosAlbum'。

2. 如果權限獲取成功,則調用wx.saveImageToPhotosAlbum將截取過來的圖片保存到相冊中。

3. 如果保存成功,那麼我們使用wx.showToast接口提示玩家圖片已成功保存到相冊中。

 

圖片保存成功了的話,我們其實還可以發起分享對吧。所以可以直接在wx.showToast後面加一個wx.shareAppMessage發起主動轉發(當然最好讓用戶決定是否分享),其中imageUrl的值就是tempFilePath變量的值。關於好友分享內容,大家可以去閱讀第七節

 

下面是保存到手機後的截圖:

   

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章