首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> FLASH教程 -> 拖出自己的精彩—谈Flash MX课件中的拖动  
拖出自己的精彩—谈Flash MX课件中的拖动


文章类别:FLASH教程 来源: 作者: 发表日期:2005-10-4 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

  文/陈学宏

  用Flash MX制作交互式的课件时,很多场合都需要用到拖动。在Flash MX中主要的拖动方式有以下三种:无任何约束的拖动、限制在某一矩形范围内的拖动、限制在某一路径上的拖动。下面通过实例加以说明。

  1.无任何约束的拖动
 
  (1)打开“插入”菜单的“新建元件”命令,在“创建新元件”对话框中,“名称”框内输入“球”,“行为”选择“影片剪接”。

  (2)画一个圆,最好是让圆心和影片剪接的中心对齐。

  (3)选择主场景,按F11打开“库”面板,将刚制作好的球拖动至主场景中。

  (4)选择主场景中的球,打开窗口下方的“属性”面板,在名称框内输入名称ball。

  (5)右击ball,选择“动作”命令,在代码编辑框内输入:

  on(press)

  {

  startDrag("",true);//允许拖动ball

  }

  on(release, releaseOutside)

  {

  stopDrag();//释放鼠标时,停止拖动ball

  }

  (6)拖动ball,我们将看到ball可以拖动到场景中的任意位置,释放鼠标时,ball将停止拖动。

  2.约束某一矩形范围内的拖动

  将以上代码改为:

  on(press)
  3.沿某一路径的拖动

  在某些场合,如通过拖动动态生成数学函数图像时,因为函数图像都有一个函数式约束,决定了以上两种方法都不可行。这种拖动的关键在于要根据约束条件来决定被拖动对象的位置。下面以动态生成圆来说明此类拖动问题的解决方法。
 
  (1)通过“插入”菜单制作一个名为“点”的电影剪接,画一个小点表示该电影剪接,注意点的中心和电影剪接的中心点重合。

  (2)转到主场景,新增一图层,将两图层分别命名为“脚本”和“对象”。

  (3)选择“对象”时间轴,在场景中加入两个“点”的实例,在它们的属性面板中分别命名为“yuanxi”(表示圆心)和“dian”(表示圆周上的点),让它们适当保持一定的距离,并且让“yuanxi”位于场景的中央。

  (4)右击“脚本”层第一帧,选择“动作”,在代码编辑窗口内输入以下脚本:

  drag_flag=false;//拖动标志

  x0=yuanxin._x;

  y0=yuanxin._y;

  dian_x=dian._x;

  dian_y=dian._y;

  //计算圆的半径,这就是拖动圆周的点的约束条件,被拖动的点到圆心的距离等于半径。

  r=Math.sqrt((x0-dian_x)*(x0-dian_x)+(y0-dian_y)*(y0-dian_y));

  _root.onEnterFrame =function()

  {

  if (drag_flag)

  {

  x = _xmouse;

  y = _ymouse;

  angle=Math.atan(Math.abs(y0-y)/Math.abs(x-x0));

  dian_x=x0+r*Math.cos(angle);

  dian_y=y0-r*Math.sin(angle);

  //第一象限

  if((x>=x0) &&&& (y<=y0))

  {

  dian_x = x0+r*Math.cos(angle);

  dian_y = y0-r*Math.sin(angle);

  depth=angle*180/3.14159;

  }


  {

  //限制拖动范围为(0,0)到(100,100)之间,注意坐标原点位于场景中的左上角。

  startDrag("",true,0,0,100,100); }

  on(release, releaseOutside)

  {

  stopDrag();

  }

  再拖动ball,将看到ball被限制在某一区域内拖动。

  //第二象限

  if((x<=x0) &&&& (y<=y0))

  {
 
  dian_x=x0-r*Math.cos(angle);

  dian_y=y0-r*Math.sin(angle);

  depth=angle*180/3.14159+90;

  }

  //第三象限

  if((x<=x0) &&&& (y>=y0))

  {
  (5)右击dian实例,选择“动作”命令,输入以下脚本:

  on(press)

  {
 
  _root.drag_flag=true;//在dian实例上按下鼠标左键,置拖动标志为真。

  }

  on(release, releaseOutside)

  {

  _root.drag_flag=false;//在dian实例上松开鼠标左键,置拖动标志为假。

  }

  (6)测试影片,拖动dian实例,将看到在场景中会画出一个由点构成的圆。

  从此例可以看出,实现沿某一路径的拖动,关键是要通过约束条件找到拖动时的对象的坐标。


  dian_x=x0-r*Math.cos(angle);

  dian_y=y0+r*Math.sin(angle);

  depth=angle*180/3.14159+180;

  }

  //第四象限

  if((x>=x0) &&&& (y>=y0))

  {

  dian_x=x0+r*Math.cos(angle);

  dian_y=y0+r*Math.sin(angle);

  depth=angle*180/3.14159+270;

  }

  duplicateMovieClip("dian","dian" add depth,depth);

  _root["dian" add depth]._x=dian_x;

  _root["dian" add depth]._y=dian_y;

  _root.clear();

  _root.moveTo(x0,y0);

  _root.lineStyle(1,0xff0000,100);

  _root.lineTo(dian_x,dian_y);

  }

  }

 

上一篇:学校网络机房及网吧轻松维护 下一篇:敲出我精彩 拼音加加超级实用小技巧两则
本栏目热门文章
·用Flash制作精巧的时钟 2005-10-4
·用Flash制作绚丽烟雾效果 2005-10-4
·Flash鼠标特效精选实例(5) 2005-10-4
·用Flash制作鬼火效果 2005-10-4
·Flash鼠标特效精选实例(1) 2005-10-4
·Flash游戏制作--记忆游戏 2005-10-4
·Adobe Flash 2006发展趋势预测 2006-1-15
·给FLASH初学者的10点制作经验 2005-12-13
·Flash鼠标特效精选实例(3) 2005-10-4
·Flash鼠标特效精选实例(2) 2005-10-4
新近更新文章
·Flash常用ActionScript控制语句基本用法 2006-6-22
·Flash特效动画制作:飞舞的螺炫 2006-6-20
·Flash 遮罩效果解析 2006-6-20
·Flash+xml 在 Dnn系统开发中的应用 2006-4-5
·Flash动态解析Web应用程序服务器路径 2006-4-5
·Flash Lite 2让移动设备轻松浏览Flash 2006-2-2
·Adobe Flash 2006发展趋势预测 2006-1-15
·给FLASH初学者的10点制作经验 2005-12-13
·用Flash制作精巧的时钟 2005-10-4
·轻松打造Flash帧速率测试器 2005-10-4
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: