第52篇铅笔轨迹的撤销(一)

关键词:铅笔轨迹的撤销

一、铅笔轨迹的撤销

1 问题描述

  现在铅笔画线时,要想撤销,需要一个点一个点的撤销,对用户来说,很不方便。因此,需要研究整个一笔的撤销,从鼠标的起点到落点之间,全量撤销。

2 相关代码

   <div class="extra-controls">

       <button id="export-as-image">Export asImage</button>

       <buttonid="btn-display-undo-popup">Undo</button>

</div>

注:<buttonid="btn-display-undo-popup">Undo</button>这个按钮是用于撤销最后一笔的,也可以撤销所有的轨迹(即屏。)

打开undo按钮,里面有四个选项,前三个Last Shape,All Shapes,Last Multiple的作用分别是:撤销最后一笔,撤消全部轨迹,撤消指定的几笔。第三项非常有用,它可以分别按下去,一次撤销10段笔迹。(这个10是输入的,如果输入15,则一次撤销15个笔迹。)

Undo的代码如下:

    <div id="light"class="white_content">

        <buttonid="btn-close-undo-popup"style="float:right;">x</button>

 

        <select id="undo-options" size="4">

            <option>LastShape</option>

            <option>AllShapes</option>

            <option>LastMultiple</option>

            <option disabled>SpecificRange</option>

        </select>

 

        <div style="display:none;margin-top: 20px;margin-bottom: 20px;margin-right: 12px;float:right;">

            Digit/Number:<br>

            <input type="text"id="number-of-shapes-to-undo" style="padding: 0;width:90px;text-align: center;border-radius: 0;margin-top: 6px;">

        </div>

 

       <br><br><br><br><br>

 

        <button id="btn-undo"style="float:right;">Undo</button>

    </div>

Last Multiple的代码如下:

       document.getElementById('btn-undo').onclick = function() {

            if(undoOptions.value === 'AllShapes') {

                designer.undo('all');

            }

            else if(undoOptions.value ==='Specific Range') {

                designer.undo({

                    specificRange: {

                        start: -1,

                        end: -1

                    }

                });

            }

            else if(undoOptions.value === 'LastShape') {

                designer.undo(-1);

            }

            else if(undoOptions.value === 'Last Multiple') {

                var numberOfLastShapes =txtNumberOfShapesToUndo.value;

                numberOfLastShapes =parseInt(numberOfLastShapes || 0) || 0;

                designer.undo({

                    numberOfLastShapes:numberOfLastShapes

                });

            }

 

            closeUndoPopup();

        };

这个好做,加个按钮,模仿上述的LastMultiple功能即可,如下:

         document.getElementById('btn-display-undo-popup-multiple').οnclick= function() {

                designer.undo({

                    numberOfLastShapes: 10

               });

        };

 

这个函数一次撤销10个笔迹,效果如下:

第一次点撤销,如下:

 第三次点撤销,如下:

第五次点撤销,如下:

 

Perfect!!

2017年1月4日星期三

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值