曾经因几位小学老师相邀为她们做课件,其中有好几节课都是关于时钟的认识,为了能够让小学生充分地认识时钟,不得不制作多个带有时间刻度的钟面。我记得小时候,多媒体教学还没有出现,老师为了能让我们对时钟有个直观的认识。用一块纸板和小棒做时钟模具,然后拨动给我们看,让我们来接触它,认识它。于是,我就思考,能不能通过多媒体来做一个时钟模具,可以自由拨动。经过多方思考,终于完成了。主要思路如下:

  首先我们来分析一下拨动指针的过程:

  1. 鼠标按下某一指针(时针或分针)。

  2. 鼠标拖动,此时指针随鼠标转动。

  那么如何能让指针随鼠标转动呢?如图1所示:假如鼠标开始在A点,然后将鼠标移动B点,只需要计算出∠AOB,然后将指针转动∠AOB的度数。

3. 释放鼠标,指针停止转动。

  通过以上过程,我们能够初步模拟出拨动指针的效果。
  那么如何获得所转动的角度呢?首先让我们先来看看在Flash中坐标是怎样设定的(如图2所示),场景的左上角为坐标原点(0,0),假如场景设为400×400。则右下角坐标为(400,400)。如果我们需要线OA转到OB,在数学中我们会通过一系列的函数运算求得,但是在Flash中我们大可不必如此,因为Flash中SetProperty函数所设定的角度值并不是相对影片开始所在的位置,而是相对于OC的(平行于X轴并经过影片剪辑的参照点),也就是只要求出∠COB的值就行了,而对于这个问题是很简单的。设B点坐标为(350,350),我们只要用B点坐标减去圆心O点的坐标所得(△x,△y),然后通过Arctan(△y/△x)就可以得到∠COB的值。同样从OB转到OA也是如此,只要求出OA相对OC的值就可以求出。在Flash中,我们同样以图2为例,OC向下转动为正值,一直到OC的反向线上终止;而向上转动为负值,同样也到OC的反向线上终止,因此OC的反向线的圆的交点与OC所在的度数有两种方法表示,分别为180°与-180°。由于我们所求的值与此保持一致,因此也不要求我们对所求值的符号做任何改动。

  具体算法就是:∠a=Arctan(Ay-Oy/Ax-Ox),其中A为指针转动后的位置与圆边相交的点,而O点为圆心所在的坐标点。

  我们已经清楚了主要的算法和过程,那么在Flash中我们又将如何实行呢?现在我们先来看看我们在Flash中用到的主要函数的具体意思。

一、 Math.atan2(y x)

  以弧度为单位计算并返回y/x的反正切值。返回值表示相对直角三角形对角的角,其中x是邻边边长,而y是对边边长。由于最后返回的是弧度。因此要求我们将其转化为角度。Math.atan2(y,x)*180/math.PI

  二、SetProperty″target″propertyvalue/expression 

  当影片播放时,更改影片剪辑的属性值。Target为更改目标的路径,Property为要设置的属性,Value/Expression为属性的新值或值的表达式。

  所要准备的都已就绪,现在就让我们进入实战阶段吧!

  1. 打开Flash,新建文件,改其场景大小为400×400。

  2. 插入一个影片剪辑命名为分针。

3. 点击直线工具,绘制出一条高为100,粗为4.5,垂直向上的蓝线。使其底端对其中心十字架(这里也就是设定我们前面提到的参照点)。

  4. 同样方法创建时针。颜色为红色,长为80,宽为8。

  5. 导入一张没有指针的钟面。再建立两个图层分别从库中将时针和分针拖到主场景中。命名为Shizhen、Fenzhen。

  6. 将两个指针分别定位到钟面的中间。

  7. 编码。由于两个指针的功能相同,因此通过函数来减少代码的大小。在第一帧中加和如下代码:

  logo=0; //判断鼠标是否按下变量

  function zhuan(mm)

  {x=_xmouse; //将当前鼠标的横坐标赋给x

  y=_ymouse; //将当关鼠标的纵坐标赋给y
  m=math.atan2(y-200,x-200) *180/math.PI; //求得转动角度,由于钟面的中心点坐标为(200,200),大家可以根据实际情况设定。

setProperty(mm,_rotation,m); //指使影片剪辑转动

  右击时针影片剪辑,添加动作如下:

  on (press) {logo=1;}  //由于我们需要鼠标按下与拖动都发生触发事件,因此以Logo作为变量来控制鼠标是否按下,如果鼠标按下Logo为非零

  on (release, releaseOutside) {logo=0;}  //鼠标释放Logo为零

  onClipEvent (mouseMove) { //鼠标移动则运行下列代码

  if(logo==1) //判断鼠标是否按下

  {_root.zhuan(_root.shizhen);} //调用Zhuan函数

  }

  对于分针我们只需将_root.zhuan(_root.shizhen)改为_root.zhuan(_root.fenzhen)。至此,我们的时钟模具就完成了。

  注:好多年前发表于中国电脑教育报

利用Flash制作一个可以自由拨动的时钟模具相关推荐

  1. html插入flash时钟,教你利用Flash制作一个会走动的时钟(时针,分针,秒针)

    其实制作时钟的方法很多,在此小编利用Flash也制作一个时钟,就当是学习CS3语言的编程技巧吧.下面是具体的实现步骤. 工具/原料 Adobe Flash CS3 方法/步骤 1.新建一Flash文档 ...

  2. python如何制作一个工程软件_如何利用python制作一个解压缩软件-Go语言中文社区...

    如何利用python制作一个解压缩软件 python实现解压缩的重要模块就是--zipfile,其次是os 安装zipfile模块 首先得安装zipfile模块,打开cmd输入一下命令即可安装 pip ...

  3. Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI

    现在NBA联赛也进行到半决赛了,我们怎么样才能以更快的方法获取NBA的数据呢?这里我们就自己来做一个数据播报的程序 文章目录 制作NBA数据爬虫 捋顺思路 编写代码 NBAReporter.py NB ...

  4. 用计算机怎么做成绩表,利用Excel制作一个简单的学生成绩表.doc

    利用Excel制作一个简单的学生成绩表 教学设计表 学科 信息技术 授课年级 八年级 学校 教师姓名 章节名称初中信息技术八年级上册第7课(第1节)计划学时1学时学习内容分析学习Excel的基础知识, ...

  5. android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏

    android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...

  6. 如何利用python制作一个解压缩软件

    文章目录 如何利用python制作一个解压缩软件 安装zipfile模块 编写核心代码 安装tkinter模块 整合代码 安装pyinstaller模块 打包程序为可执行文件 打包程序为可执行文件 如 ...

  7. 利用EasyDL制作一个简单的图片识别小项目

    主要是利用EasyDL制作一个简单的傻瓜式猫狗图片识别,利用EasyDL,只需要几步简单的点击即可 *主要的步骤: 1.准备数据 2.训练模型 3.部署 4.H5 * 1.首先创建两个文件夹cat和d ...

  8. 利用字典制作一个登录用户账号密码管理系统,实现对账号密码的增删改查等功能

    利用字典制作一个登录用户账号密码管理系统,实现对账号密码的增删改查等功能: 当前默认账号密码为:user = {'Wangwu':123456,'Zhangsan':456789,'Lisi':789 ...

  9. pr如何跳到关键帧_PR教程 如何利用pr制作一个简单的动画

    Adobe Premiere Pro简称PR,是一款非常不错的视频制作编辑软件,如何如何利用pr制作一个简单的动画,这里小编为大家带来了pr动画制作教程--利用pr制作动画,一起来学习一下吧! Ado ...

最新文章

  1. 工作报告总是写不好?表达不准确?试试这个写作方法
  2. LeetCode--014--最长公共前缀(java)
  3. 改变Error tip的背景色.
  4. 模拟浏览器自动化测试工具Selenium之一eclipse集成开发部署篇
  5. 视觉错觉模型_有才!将立体模型涂改伪装成平面二次元,视觉错觉玩法在日本风靡...
  6. synchronized同步方法
  7. c++ doxygen 注释规范_利用Doxygen给C程序生成注释文档
  8. Qt开启本地事件循环(防止界面卡阻塞【卡死】)QEventLoop 的基本使用
  9. Python的lambda函数
  10. 计算机专业考研不想走编程,考研的这些弯路,不要走,好吗?
  11. 算法萌新如何学好动态规划(一)
  12. 1.海康威视-在浏览器中摄像头激活
  13. OPPO R9S线刷
  14. android 的android httpClient详解
  15. 数字图像处理实验之Matlab对图像的基本处理
  16. Python爬虫实战01 ---- 百度贴吧一键签到
  17. 六轴传感器——姿态检测(20200112)(未完)
  18. APP支付和H5网页支付有哪些不同?
  19. 英特尔为RRP物联网平台项目预留1亿美元开发资金
  20. 东周列国志美文摘录-晏平仲巧辩服荆蛮

热门文章

  1. Webdriver - webdriver hangs when get or click
  2. 2021年IT行业现状及就业前景怎样?
  3. ANSYS经典界面出图技巧总结
  4. 什么是interop
  5. Patch:虚拟DOM最核心的部分--如何对比虚拟DOM树,以及如果生成真实DOM
  6. http中各个状态码的含义
  7. HTTP 各种状态码代表的含义
  8. 了解互联网一些基本知识
  9. Linux下安装firefox最新版
  10. 1g的树莓派4b能做什么_树莓派4代B型1GB Raspberry Pi