W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
解釋:監(jiān)聽加速度數(shù)據(jù),頻率依賴 swan.startAccelerometer 傳遞的 interval,默認(rèn) 5 次/秒。接口調(diào)用后會(huì)自動(dòng)開始監(jiān)聽,可使用 swan.stopAccelerometer 停止監(jiān)聽。
Web 態(tài)說明:由于瀏覽器對(duì)于 W3C 規(guī)范的實(shí)現(xiàn)差異,onAccelerometerChange 功能在部分瀏覽器(比如 Safari 瀏覽器)下不可用,在功能不可用的情況下,該方法的事件回調(diào)不會(huì)被觸發(fā),但該方法會(huì)返回一個(gè)錯(cuò)誤對(duì)象。
Function callback
屬性名 | 類型 | 必填 | 默認(rèn)值 | 說明 |
---|---|---|---|---|
x | Number | 是 | X 軸 | |
y | Number | 是 | Y 軸 | |
z | Number | 是 | Z 軸 |
<view class="wrap">
<view class="page-top">
<view class="page-top-text">{{title}}</view>
<view class="page-top-line"></view>
</view>
<view class="page-body-canvas">
<image mode="aspectFit" src="https://b.bdstatic.com/searchbox/icms/searchbox/img/gravity.png" rel="external nofollow" class="page-body-ball"></image>
<canvas class="page-body-ball" show="{{true}}" canvas-id="small-ball"></canvas>
</view>
<view class="page-body-xyz">
<text class="page-body-title">X: {{x}}</text>
<text class="page-body-title">Y: {{y}}</text>
<text class="page-body-title">Z: {{z}}</text>
</view>
<view class="page-body-btn">
<view class="middle-btn {{!isWatch ? '' : 'disabled'}}" bind:tap="startWatch">開始監(jiān)聽</view>
<view class="middle-btn {{!isWatch ? 'disabled' : ''}}" bind:tap="stopWatch">停止監(jiān)聽</view >
</view>
</view>
Page({
data: {
title: '傾斜手機(jī)即可移動(dòng)下方小球',
isWatch: true,
x: 0,
y: 0,
z: 0
},
onReady() {
this.position = {
x: 151,
y: 151,
vx: 0,
vy: 0,
ax: 0,
ay: 0
};
swan.onAccelerometerChange(res => {
this.setData({
x: res.x.toFixed(2),
y: res.y.toFixed(2),
z: res.z.toFixed(2)
});
this.position.ax = Math.sin(res.x * Math.PI / 2);
this.position.ay = -Math.sin(res.y * Math.PI / 2);
});
this.interval = setInterval(() => {
this.drawSmallBall();
}, 20);
},
onShow() {
let isWatch = this.data.isWatch;
isWatch
? swan.startAccelerometer()
: swan.stopAccelerometer();
},
drawSmallBall() {
let p = this.position;
p.x = p.x + p.vx;
p.y = p.y + p.vy;
p.vx = p.vx + p.ax;
p.vy = p.vy + p.ay;
if (Math.sqrt(Math.pow(Math.abs(p.x) - 151, 2) + Math.pow(Math.abs(p.y) - 151, 2)) >= 115) {
if (p.x > 151 && p.vx > 0) {
p.vx = 0;
}
if (p.x < 151 && p.vx < 0) {
p.vx = 0;
}
if (p.y > 151 && p.vy > 0) {
p.vy = 0;
}
if (p.y < 151 && p.vy < 0) {
p.vy = 0;
}
}
let stx = this.createCanvasContext('small-ball');
stx.beginPath(0);
stx.arc(p.x, p.y, 15, 0, Math.PI * 2);
stx.setFillStyle('#3388FF');
stx.fill();
stx.draw();
},
startWatch() {
this.setData('isWatch', true);
swan.startAccelerometer();
},
stopWatch() {
this.setData('isWatch', false);
swan.stopAccelerometer();
},
onHide() {
clearInterval(this.interval);
app.globalData.openParams = '';
},
onUnload() {
clearInterval(this.interval);
}
});
錯(cuò)誤碼 | 說明 |
---|---|
1001 | 執(zhí)行失敗 |
錯(cuò)誤碼 | 說明 |
---|---|
202 | 解析失敗,請(qǐng)檢查參數(shù)是否正確 |
1001 | 設(shè)備不支持否正確 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: