2007/03/14 | 画板程序
类别(flash As) | 评论(0) | 阅读(135) | 发表于 17:52

原贴http://bbs.blueidea.com/thread-2667642-1-1.html

lzyy [楼主]

银牌会员


帖子 474
体力 1151
威望 34
注册 2005-6-4      #1
发表于 2006-8-16 16:24  资料 主页 短消息  
这个涂鸦板实现的是最基本的功能:画图、清除、回放、重画。

浏览地址:http://www.healdream.com/blog/article.asp?id=141

增加逐步撤销功能:

点此浏览

最新测试地址(增加交互功能+缩略图功能):

点此浏览

如不能打开请直接点下面的地址:

http://www.healdream.com/blog/upload/tuya/mytuya.html

个人感觉一个比较大的缺陷是代码不够清晰,嘿嘿

var i = -1;//初始化
this.showbg_mc.createEmptyMovieClip("tmp_mc", 100);//建立空影片剪辑
var my_arrx:Array = new Array();//这两个数组是用来记录坐标的
var my_arry:Array = new Array();
_root.draw_btn.onRelease = function() {//当“开画”按钮按下时,执行下列代码
       this._visible = false;//设按钮不可见
       showbg_mc.onMouseDown = function() {//当在画布上按下鼠标左键时
              if (haveReplay) {//如果已经重放过了
                     //trace("haveReplay");
                     my_arrx.splice(0);//删除两个数组的所有元素
                     my_arry.splice(0);
                     haveReplay = false;
                     i = 0;//重新设定i
              }
              this.drawing = true;//表明是否开始画
              origin_x = _xmouse;//记录鼠标坐标
              origin_y = _ymouse;
              //移动到鼠标按下的点
              this.tmp_mc.moveTo(origin_x-this._x, origin_y-this._y-10);
              //这个是判断鼠标是否再次按下时,为以后的回放作判断
              if (my_arrx[i] == "readymove") {
                     i++;
                     my_arrx[i] = origin_x-this._x;
                     my_arry[i] = origin_y-this._y-10;
              }
       };
       showbg_mc.onMouseMove = function() {//当鼠标在舞台移动时
       //如果在规定的区域内
              if (_xmouse<472 && _ymouse<297 && _xmouse>75 && _ymouse>67) {
                     if (this.drawing) {//如果鼠标已经按下
                            //trace(i);
                            i++;
                            my_arrx[i] = _xmouse-this._x;//记录鼠标的坐标
                            my_arry[i] = _ymouse-this._y-10;
                            this.tmp_mc.lineStyle(1, 0x006699, 100);//开始画线
                            this.tmp_mc.lineTo(_xmouse-this._x, _ymouse-this._y-10);
                     }
              }
       };
       showbg_mc.onMouseUp = function() {
              //设为未画状态
              this.drawing = false;
              i++;
              //将my_arrx[i]设为准备移动
              my_arrx[i] = "readymove";
       };
};
_root.clear_btn.onRelease = function() {
       //当清除按钮按下时,清除以前的画
       _root.showbg_mc.retmp_mc.clear();
       _root.showbg_mc.tmp_mc.clear();
       //删除数组元素
       my_arrx.splice(0);
       my_arry.splice(0);
       i = -1;
};
j = 0;
_root.replay_btn.onRelease = function() {
       //回放按钮按下时将haveReplay设为真,同时将j清零
       haveReplay = true;
       j = 0;
       //清除以前的画
       _root.showbg_mc.tmp_mc.clear();
       //建立空影片
       var rtmp_mc:MovieClip = _root.showbg_mc.createEmptyMovieClip("retmp_mc", 10000);
       rtmp_mc.lineStyle(1, 0x006699, 100);
       rtmp_mc.moveTo(my_arrx[j], my_arry[j]);
       var Iid:Number = setInterval(replay, 20);//这里可以设定回放速度
       //这句话很重要,如果不赋值的话,后面无法用clearInterval清除
       _global.tmp=Iid;
};
function replay() {
       //如果my_arrx[j]已定义的话
       if (my_arrx[j] != undefined) {
              //如果是准备移动的话,调用moveTo语句,而不是lineTo
              if (my_arrx[j] != "readymove") {
                     _root.showbg_mc.retmp_mc.lineTo(my_arrx[j], my_arry[j]);
                     j++;
              } else {
                     //执行lineTo语句
                     j++;
                     _root.showbg_mc.retmp_mc.moveTo(my_arrx[j], my_arry[j]);
                     j++;
              }
       } else {
              //清除setInterval
              clearInterval(_global.tmp);
       }
}

0

评论Comments

日志分类
首页[193]
flash As[107]
有的没的[59]
数码照片[4]
自由世界[19]
blender[4]