文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页网页设计Flash → 拖出自己的精彩—谈Flash MX课件中的拖动

拖出自己的精彩—谈Flash MX课件中的拖动

时间:2004/11/7 2:26:00来源:本站整理作者:蓝点我要评论(0)

  文/陈学宏


  用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);


  }


  }


 


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 Flash CS4基础入门 如何在Flash中打开一个定制的浏览器新窗口?学习ActionScript 3.0的6个好处几个小技巧精简Flash文件体积在Flash动画中添加“加为收藏”和“设为首页

人气排行 Flash游戏制作--小熊拼图用Flash实现几种镜头效果Flash制作动画知识:遮罩Flash如何做鼠标指针样式Flash制作环形文字Flash制作声情并茂的电子相册实例讲解flashMTV制作全过程(3)鼠标效果系列教程:游动的鱼