上一篇Canvas的博文写完后,有位朋友希望能对Canvas绘制出来的图像进行点击.拖拽等操作,因为Canvas绘制出的图像能很好的美化.好像是想做炉石什么的游戏,我也没玩过. Canvas在我的理解中就好像在一张画布上绘制图像,它只能看到却“摸”不到,那要如何进行操作呢.我不知道网上是怎么做的,这里用自己的想法做了个DEMO分享给大家. 思路: 虽然Canvas不能拖拽,但div可以拖拽,那怎么把二者结合起来呢.初步想法是将一个与Canvas图像大小差不多的div覆盖在其上,在拖拽div时将获…
参考:Canvas drag 实现拖拽拼图小游戏 参考的案例,不支持手机端.总结下实现过程中遇到的小坑. gitHub:https://github.com/WppFrontEnd/puzzle 大概步奏分为三部分: 1. cavas 分割图片 2. 图片乱序 3. 排序图片 其中1和2都是参考了Canvas drag 实现拖拽拼图小游戏. 代码主要如下: 1. cavas 分割图片 segmentImg: function(puzzleImg){ var index =0; divisionN…
项目的一个新需求,动态生成矩形框,鼠标点击拖动改变矩形框的位置,并可以调整大小. 之前做过一个小demo,需求类似,但是在canvas内只有一个矩形框,拖动移动,当时记得是用isPointInPath()直接判断鼠标是否点在了矩形框以内.新需求的矩形框个数为n,经过测试,isPointinPath实现过程中有bug,并不能精准定位到具体点击到canvas的某一个矩形框.经过一系列的头脑风暴,才想出了解决办法,才发现原来是最简单的方法,但是在思考的当初就被pass了,见代码: html: <bod…
博主一直心心念念想做一个小游戏-  前端时间终于做了一个小游戏,直到现在才来总结,哈哈- 以后要勤奋点更新博客! 实现原理 1.如何切图? 用之前的方法就是使用photoshop将图片切成相应大小的图片.这种做法不灵活,如果要更换图片的话,就得重新去切图,很麻烦. 现在是使用canvas,图片是一整张jpg或者png,把图片导入到canvas画布,然后再调用上下文context的getImageData方法,把图片处理成小图,这些小图就作为拼图的基本单位 renderImg: function…
因为QGraphicsView继承自QWidget,它也提供了像QWidget那样的拖拽功能. 另外,为了方便,Graphics View框架也为场景以及每个item提供拖拽支持.当视图接收到拖拽事件,它可转化为QGraphicsSceneDragDropEvent,再发送到场景.场景接管这个事件,把它发送到光标下接受拖拽的第一个item. 从一个item开始拖拽时,创建一个QDrag对象,传递开始拖拽的那个widget的指针.Items可以同时被多个视图观察,但只有一个视图可以开始拖拽. 拖拽…
关于canvas 的基础知识就不多说了,可以进这个网址学习 http://www.w3school.com.cn/html5/html_5_canvas.asp 对于canvas 和 SVG 其实一开始个人是比较倾向于SVG多一点,不过后来工作需要,又学习了下canvas, 这两个之间主要不同是 canvas是在JavaScript中绘制,SVG则是在 XML 绘制 其实canvas 主要的工作就是绘制图像,图表之类的工作,对于一些可操作的特效个人还是更喜欢用canvas + div 来实现: …
提起拖拽,我就想起了在JavaScript培训的时候一个非常好玩的效果,那就是拖拽了.可以用鼠标任意拖拽着一个物体到任何你想去的地方. 最早拥有JavaScript拖拽功能的是IE4浏览器.当时,网页中只有两种对象是可以拖拽的,那就是:图形和某些文字.拖拽图像的时候,把鼠标放在图像上,按住鼠标不放就可以拖拽了.拖拽文字时,要先选中文字,然后可以像拖动图像那样拖拽选中的文字.在IE4中,唯一有效的放置拖拽文字的目标是文本框.到了IE5.5更进一步,让网页中的任何元素都可以拖拽(IE6以上也支持这些…
项目需要,实现一个拖放操作,要求每次可以拖拽选中的多个元素,释放到目标容器后可排序.考虑了一下,觉得jquery-ui比较合适,毕竟它提供了项目需要的交互性事件机制.拖拽.释放.排序.选择等效果.而在实际的操作中,遇到个很多的问题,说明一下,最后附上效果图和代码. 1.本人使用的bootstrap框架,引入jquery-ui后,为元素添加拖拽方法后,提示该方法不是一个函数.查找原因,是bootstrap和jquery-uide的$ 标识符控制权冲突.在引入的jquery-ui的js前加上一下语句…
前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到一个需求,说是两种不同状态的订单之间要实现插单的效果,页面上呈现方式是:左右两个Table,左边Table里面是状态为1的订单,右边Table里面是状态为2订单,左边Table里面的行数据拖动到右边Table里面指定行的位置,拖动完成后,左边表格减少一行,右边表格增加一行.除此之外,还需要撤销操作(…
工作上遇到的需求:页面上需要拖拽一个小方块div拷贝至保存的容器中. 一.可拖拽 那么我们需要对小方块div进行授权,设置draggable="true"允许其被拖动 二.定义拖拽事件 由于要对小方块进行拷贝,因此我们可以直接在拖拽开始的事件中对小方块进行拷贝 那么很显然拖拽时发生的操作我们会在drag函数中进行定义: 如:在拖动事件drag中对拖动的小方块进行了拷贝,保存在了dom中.当然有其他需求的可以再进行一些其他的操作. 三.容器的操作 对于容器而言,我们需要对其授权,操作dr…