4 • 闲云清风 • 1个月前 • 243次点击
这里有开发者吗?有写js的没。语音合成一个一个很麻烦。有没有办法?以通知的形式,然后暂停触摸浏览之后通过滑动来进行通知的。或者是有会其他语言的没有。可以教学的话那是最好的。
const 文本显示元素 = document.getElementById('文本显示区域');
let 首次触摸横坐标 = 0;
let 首次触摸纵坐标 = 0;
let 上次点击时间 = 0;
let 点击次数 = 0;
const 左右滑动音效音频 = new Audio('yx/1');
const 双击音效音频 = new Audio('yx/3');
const 背景音乐音频 = new Audio('yy/z1.mp3');
const pageConfigs = {
"开始游戏":
{
audioPath: 'dp/1.wav',
href: ""
},
"更新日志":
audioPath: 'dp/2.wav',
"关于":
audioPath: 'dp/3.wav',
"用户协议":
audioPath: 'dp/4.wav',
"隐私政策":
audioPath: 'dp/5.wav',
}
};
window.onload = function ()
背景音乐音频.loop = true;
document.addEventListener('touchstart', handleTouchStart);
document.addEventListener('touchmove', handleTouchMove);
document.addEventListener('touchend', handleTouchEnd);
function handleTouchStart(e)
if (背景音乐音频.paused)
背景音乐音频.play().catch(function (error) {
console.log('背景音乐播放出错:', error);
);
const 触摸点 = e.touches[0];
首次触摸横坐标 = 触摸点.pageX;
首次触摸纵坐标 = 触摸点.pageY;
function handleTouchMove(e) {}
function handleTouchEnd(e)
const 触摸点 = e.changedTouches[0];
const 当前横坐标 = 触摸点.pageX;
const 横坐标差值 = 当前横坐标 - 首次触摸横坐标;
const 横坐标移动差值 = 当前横坐标 - 首次触摸横坐标;
const 移动距离 = Math.sqrt(横坐标移动差值 * 横坐标移动差值);
const 当前时间 = Date.now();
if ((Math.abs(横坐标移动差值) > 50 && 移动距离 > 50)
||
(当前时间 - 上次点击时间 < 500 && Math.abs(触摸点.pageX - 首次触摸横坐标) <= 30 && Math.abs(触摸点.pageY - 首次触摸纵坐标) <= 30)) {
const currentText = 文本显示元素.textContent;
const isSlide = Math.abs(横坐标移动差值) > 50 && 移动距离 > 50;
const isDoubleClick = 当前时间 - 上次点击时间 < 500 && Math.abs(触摸点.pageX - 首次触摸横坐标) <= 30 && Math.abs(触摸点.pageY - 首次触摸纵坐标) <= 30;
if (isSlide)
let targetText = "";
if (横坐标移动差值 < 0)
targetText = getPrevText(currentText);
else
targetText = getNextText(currentText);
if (targetText)
handleTextChangeAndAudio(currentText, targetText);
播放左右滑动音效();
if (isDoubleClick)
点击次数++;
if (点击次数 === 2)
handleDoubleClick(currentText);
点击次数 = 0;
上次点击时间 = 当前时间;
function getPrevText(currentText)
const texts = Object.keys(pageConfigs);
const currentIndex = texts.indexOf(currentText);
return currentIndex === 0? texts[texts.length - 1] : texts[currentIndex - 1];
function getNextText(currentText)
return currentIndex === texts.length - 1? texts[0] : texts[currentIndex + 1];
function handleTextChangeAndAudio(currentText, targetText)
文本显示元素.textContent = targetText;
const audio = new Audio(pageConfigs[targetText].audioPath);
audio.pause();
audio.currentTime = 0;
audio.play();
function handleDoubleClick(currentText) {
const 双击音效克隆 = 双击音效音频.cloneNode(true);
双击音效克隆.addEventListener('ended', function () {
window.location.href = pageConfigs[currentText].href;
双击音效克隆.play();
function 播放左右滑动音效()
左右滑动音效音频.pause();
左右滑动音效音频.currentTime = 0;
if (左右滑动音效音频.readyState === 4)
左右滑动音效音频.play();
左右滑动音效音频.addEventListener('canplaythrough', function () {
你在用AndroLua做游戏?
积分:1602
const 文本显示元素 = document.getElementById('文本显示区域');
let 首次触摸横坐标 = 0;
let 首次触摸纵坐标 = 0;
let 上次点击时间 = 0;
let 点击次数 = 0;
const 左右滑动音效音频 = new Audio('yx/1');
const 双击音效音频 = new Audio('yx/3');
const 背景音乐音频 = new Audio('yy/z1.mp3');
const pageConfigs = {
"开始游戏":
{
audioPath: 'dp/1.wav',
href: ""
},
"更新日志":
{
audioPath: 'dp/2.wav',
href: ""
},
"关于":
{
audioPath: 'dp/3.wav',
href: ""
},
"用户协议":
{
audioPath: 'dp/4.wav',
href: ""
},
"隐私政策":
{
audioPath: 'dp/5.wav',
href: ""
}
};
window.onload = function ()
{
背景音乐音频.loop = true;
document.addEventListener('touchstart', handleTouchStart);
document.addEventListener('touchmove', handleTouchMove);
document.addEventListener('touchend', handleTouchEnd);
}
function handleTouchStart(e)
{
if (背景音乐音频.paused)
{
背景音乐音频.play().catch(function (error) {
console.log('背景音乐播放出错:', error);
}
);
}
const 触摸点 = e.touches[0];
首次触摸横坐标 = 触摸点.pageX;
首次触摸纵坐标 = 触摸点.pageY;
}
function handleTouchMove(e) {}
function handleTouchEnd(e)
{
const 触摸点 = e.changedTouches[0];
const 当前横坐标 = 触摸点.pageX;
const 横坐标差值 = 当前横坐标 - 首次触摸横坐标;
const 横坐标移动差值 = 当前横坐标 - 首次触摸横坐标;
const 移动距离 = Math.sqrt(横坐标移动差值 * 横坐标移动差值);
const 当前时间 = Date.now();
if ((Math.abs(横坐标移动差值) > 50 && 移动距离 > 50)
||
(当前时间 - 上次点击时间 < 500 && Math.abs(触摸点.pageX - 首次触摸横坐标) <= 30 && Math.abs(触摸点.pageY - 首次触摸纵坐标) <= 30)) {
const currentText = 文本显示元素.textContent;
const isSlide = Math.abs(横坐标移动差值) > 50 && 移动距离 > 50;
const isDoubleClick = 当前时间 - 上次点击时间 < 500 && Math.abs(触摸点.pageX - 首次触摸横坐标) <= 30 && Math.abs(触摸点.pageY - 首次触摸纵坐标) <= 30;
if (isSlide)
{
let targetText = "";
if (横坐标移动差值 < 0)
{
targetText = getPrevText(currentText);
}
else
{
targetText = getNextText(currentText);
}
if (targetText)
{
handleTextChangeAndAudio(currentText, targetText);
播放左右滑动音效();
}
}
if (isDoubleClick)
{
点击次数++;
if (点击次数 === 2)
{
handleDoubleClick(currentText);
点击次数 = 0;
}
}
上次点击时间 = 当前时间;
}
}
function getPrevText(currentText)
{
const texts = Object.keys(pageConfigs);
const currentIndex = texts.indexOf(currentText);
return currentIndex === 0? texts[texts.length - 1] : texts[currentIndex - 1];
}
function getNextText(currentText)
{
const texts = Object.keys(pageConfigs);
const currentIndex = texts.indexOf(currentText);
return currentIndex === texts.length - 1? texts[0] : texts[currentIndex + 1];
}
function handleTextChangeAndAudio(currentText, targetText)
{
文本显示元素.textContent = targetText;
const audio = new Audio(pageConfigs[targetText].audioPath);
audio.pause();
audio.currentTime = 0;
audio.play();
}
function handleDoubleClick(currentText) {
const 双击音效克隆 = 双击音效音频.cloneNode(true);
双击音效克隆.addEventListener('ended', function () {
window.location.href = pageConfigs[currentText].href;
}
);
双击音效克隆.play();
}
function 播放左右滑动音效()
{
左右滑动音效音频.pause();
左右滑动音效音频.currentTime = 0;
if (左右滑动音效音频.readyState === 4)
{
左右滑动音效音频.play();
}
else
{
左右滑动音效音频.addEventListener('canplaythrough', function () {
左右滑动音效音频.play();
}
);
}
}