[canvas基础]pc&mobile写字板

本文介绍了一个基础的canvas写字板实现,支持PC和mobile设备,包含鼠标和触摸事件处理,以及画布清空功能。

目的:实现canvas写字板

兼容:同时支持PC和mobile

功能:实现基础的写字板功能,未进行功能拓展,如,画布背景,画笔样式,记录步骤……

创建时间:2015年7月1日/最后修改时间:2015年7月2日

主要用到的事件:pc:mousedown,mousemove,mouseup,

                 mobile: touchstart,     touchmove,        touchend

             publicFun: addEventListener <==> removeEventListener,

演示地址:http://runjs.cn/code/ke4jgto0

源代码:

html&css

<style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }

        .can{
            width: 500px;
            height: 300px;
            margin: 100px auto 0;
            border: 1px solid #c1c1c1;
            background-color: #414141;

        }
        .delete{
            width: 100px;
            height: 50px;
            margin: 20px auto;
            background-color: red;
            text-align: center;
            line-height: 50px;
        }
    </style>
        <div class="can">
        <canvas id="myCanvas"></canvas>
    </div>
    <div class="delete" id="delete">删除</div>
View Code

js

window.onload = function(){

            var canvas    = document.getElementById('myCanvas'),
                //拿到绘图环境
                thisDorw  = canvas.getContext('2d');
                //定义大小
                canvas.width  = canvas.parentNode.clientWidth;
                canvas.height = canvas.parentNode.clientHeight;

            var deleteBut = document.getElementById('delete'),//删除按钮
                //定义事件类型,未初始化
                drawBegin,
                drawIng,
                drawEnd;

            //检查是否支持触摸
            function cnaTouch(){
                if( 'ontouchend' in window ) {
                    return true;
                }else{
                    return false;
                }
            }

            //定义事件名称
            if( cnaTouch() ){
                //触摸
                drawBegin = 'touchstart';
                drawIng   = 'touchmove';
                drawEnd   = 'touchend';
            }else{
                drawBegin = 'mousedown';
                drawIng   = 'mousemove';
                drawEnd   = 'mouseup';
            }

            //添加mousedown or touchstart事件                
            canvas.addEventListener(drawBegin,startTouch,false);

            //开始点击/触摸
            function startTouch(){
                thisDorw.beginPath();
                thisDorw.lineWidth = 10;

                deleteBut.style.backgroundColor='#454545';

                //开始触摸以后,绑定移动和结束事件
                canvas.addEventListener(drawIng,moveTouch,false);
                canvas.addEventListener(drawEnd,endTouch,false);
            }

            //开始滑动
            function moveTouch(e){
                e.preventDefault();
                var X       = 0,
                    Y       = 0;
                //根据是否支持touch来控制X Y 的值
                if( cnaTouch() ){
                    var touches = e.touches[0],
                    X    = touches.pageX - canvas.offsetLeft;
                    Y    = touches.pageY - canvas.offsetTop;
                }else{
                    X = e.pageX - canvas.offsetLeft;
                    Y = e.pageY - canvas.offsetTop;
                }
                //开始画图
                thisDorw.lineTo(X,Y);
                thisDorw.stroke();
            }
            //结束滑动
            function endTouch(){
                deleteBut.style.backgroundColor='red';
                //touch结束的时候,移出事件绑定
                canvas.removeEventListener(drawIng,moveTouch,false);
                canvas.removeEventListener(drawEnd,endTouch,false);
            }

            //画布清空方法
            deleteBut.onclick = function(){
                thisDorw.clearRect(0,0,canvas.width,canvas.height)
            };

        }
View Code

 

转载于:https://www.cnblogs.com/xxyy1122/p/4615184.html

(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值