OpenHarmony开发实战:自定义抽奖转盘(JS)




// 引入CanvasRenderingContext2D对象
import CanvasRenderingContext2D from 'canvas/lib/canvas-rendering-context-2d';
 
export default {
    data: {
        // 圆的半径
        radius: 150,
        // 圆心坐标
        centerX: 300,
        centerY: 300,
        // 起始角度
        startAngle: 0,
        // 结束角度
        endAngle: 2 * Math.PI,
        // 是否在绘制过程中
        isDrawing: false,
        // 当前角度
        currentAngle: 0,
        // 是否停止
        stop: false,
        // 是否重置
        reset: false,
        // 是否开始
        start: false,
        // 中奖索引
        winningIndex: -1,
        // 中奖名单
        winningList: [],
        // 公共颜色
        commonColor: '#ffde33',
        // 中奖颜色
        winningColor: '#ff5858',
        // 文本颜色
        textColor: '#000000',
        // 文本大小
        fontSize: 20,
        // 文本内容
        textContent: '开始',
        // 画笔宽度
        lineWidth: 10,
        // 圆环数量
        circleCount: 8,
        // 圆环颜色数组
        circleColors: ['#ffde33', '#ffb236', '#ff993e', '#ff7745', '#ff5858'],
        // 圆环线条宽度数组
        circleLineWidths: [5, 10, 15, 20, 25],
        // 圆环内半径
        innerRadius: 100,
        // 圆环外半径
        outerRadius: 150,
        // 圆环间隔角度
        angleInterval: 2 * Math.PI / 8,
        // 是否显示中奖信息
        showWinningInfo: false,
        // 中奖信息颜色
        winningInfoColor: '#ff5858',
        // 中奖信息字体大小
        winningInfoFontSize: 30,
        // 中奖信息内容
        winningInfoContent: '恭喜中奖!',
        // 中奖信息x坐标
        winningInfoX: 150,
        // 中奖信息y坐标
        winningInfoY: 100,
        // 是否显示重新开始按钮
        showRestart: false,
        // 重新开始按钮颜色
        restartColor: '#ff5858',
        // 重新开始按钮字体大小
        restartFontSize: 20,
        // 重新开始按钮内容
        restartContent: '重新开始',
        // 重新开始按钮x坐标
        restartX: 150,
        // 重新开始按钮y坐标
        restartY: 150,
    },
    // 绘制方法
    draw() {
        // 获取Canvas上下文
        const ctx = this.$refs.canvas.getContext('2d');
        // 清除画布
        ctx.clearRect(0, 0, 600, 600);
        // 如果没有开始或者停止,则继续绘制
        if (!this.start || this.stop) {
            return;
        }
        // 如果没有重置,则
最后修改于:2024年08月15日 12:33

评论已关闭

推荐阅读

Vue中使用mind-map实现在线思维导图
2024年08月04日
VUE
Web前端最全Vue实现免密登录跳转的方式_vue怎么样不登录返回首页,最强技术实现
2024年08月04日
VUE
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)
2024年08月04日
VUE
Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)
2024年08月04日
VUE
Vue项目卡顿慢加载?这些优化技巧告诉你!_vue数据多渲染卡顿
2024年08月04日
VUE
vue中的keep-alive详解与应用场景
2024年08月04日
VUE
Vue、React实现excel导出功能(三种实现方式保姆级讲解)
2024年08月04日
vue-office/docx插件实现docx文件预览
2024年08月04日
VUE
java调用js文件的两种方法(支持V8引擎)
2024年08月04日
JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
2024年08月04日
两周从爬虫小白变大神 _yjs_js_security_passport
2024年08月04日
JS笔记(对象、函数、数组)
2024年08月04日
Markdown.js:强大的纯JavaScript Markdown解析器
2024年08月04日
Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
2024年08月04日
vue 父组件怎么获取子组件里面的data数据
2024年08月04日
VUE
个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)
2024年08月04日
el-table 表格封装并改造实现单元格可编辑
2024年08月04日
none
nodejs环境下创建vue项目、SSH密钥登陆!!!
2024年08月04日
vue+quill+element-ui实现视频、图片上传及缩放保姆级教程,轻松使用富文本
2024年08月04日
【three.js】22. Imported Models导入模型
2024年08月04日