首页 > 设计 > 媒体动画 > 正文

Authorware类和函数:运用Authorware地函数绘制旋转移动地办法

2020-09-19 18:45:38
字体:
来源:转载
供稿:网友
authorware5.0提供了motion运动图标,它可以提供五种运动功能,但要实现像时针这类的旋转移动,motion运动图标则无能为力,这就要借助authorware的函数来实现这一类运动,下面以制作时钟为例,这个例子中我们要用到以下几个函数:

  line(pensize, x1, y1, x2, y2):画线函数,其中pensize是线的宽度,x1, y1线的起点坐标,x2, y2线的终点坐标。

  rgb(r, g, b):颜色函数,r(红色)、g(绿色)、b(蓝色)取值范围是0~255。


  图1 建立钟表图形

  setfill(flag [,color]):设置填充颜色,flag为true填充,flag为 false不填充,color为rgb函数产生的颜色。

  setframe(flag [, color]):设置边框颜色,flag为 true填充,flag为false不填充,color为rgb函数产生的颜色。

  setline(type):设置线条的形状,type 可以取0、1、2、3。取0没有箭头,取1起始端有箭头,取2结束端有箭头,取3两端都有箭头。制作过程如下:

  1、 拖曳一个显示图标到流程线上,命名为表盘,打开此图标在其中绘制图1的图形。

  2、 拖曳一个显示图标到流程线上,命名为系统时间,打开此图标在其中用文本工具输入{fulltime} ( fulltime是系统变量,记录系统时间,格式为hh∶mm∶ss),将该图标属性中options中的update displayed variables项选中。

  3、 拖曳一个计算图标到流程线上,命名为设置参数。打开该图标在里面输入clockslice:=2*pi/60 (设置时间片)radius:=(displaywidth@"表盘"/2)-10 (设置时钟半径,displaywidth@"表盘"取得的值是表盘图标的宽度)。

  4、 拖曳一个决策判断图标到流程线上,命名为循环。在其属性框的repeat框中选中until true在其下的值框中输入0。

  5、 拖曳一个群组图标到循环图标右边(如图2),打开群组图标在其中建立如图3所示的各图标。

  在绘制时针计算图标中输入以下内容:

  setframe(1,rgb(0,0,255))

  increment:=hour*clockslice*5

  angle:=pi/2-increment

  line(3,displayx@"表盘"-p*cos(angle),displayy@"表盘"+p*sin(pi/2+increment),(radius-sh-h)*cos(angle)

  +displayx@"表盘",displayy@"表盘"-(radius-sh-h)*sin(angle))

  注:hour是系统变量,用来记录当前时间前面的时位是多少小时。

  将1秒等待图标属性中所有复选框全部不选中,将time limit后面的输入框中输入1秒。

  在绘制分针计算图标中输入以下内容:

  setframe(true,rgb(0,255,200))

  increment:=minute*clockslice

  angle:=pi/2-increment

  setline(0)

  line(3,displayx@"表盘"-p*cos(angle),displayy@"表盘"+p*sin(angle),(radius-sh)*cos(angle)+


  图2 程序流程图

  displayx@"表盘",displayy@"表盘"-(radius-sh)*sin(angle))

  setfill(true,rgb(0,255,0))

  circle(2, displayx@"表盘"-2, displayy@"表盘"-2,displayx@"表盘"+2, displayy@"表盘"+2)

  注:minute是系统变量,用来记录当前时间中中间的分位是多少分。

  在绘制秒针计算图标中输入以下内容:

  setframe(1,rgb(255,0,0))

  increment:=sec*clockslice

  angle:=pi/2-increment

  setline(2)

  line(1,displayx@"表盘"-p*cos(angle),displayy@"表盘"+p*sin(angle), radius*cos(angle)+displayx@"表盘",

  displayy@"表盘"-radius*sin(angle))

  setfill(true,rgb(0,255,0))

  circle(1, displayx@-2, displayy@"表盘"-2,displayx@"表盘"+2, displayy@"表盘"+2)


  图3 在群体图标中建立的图标

  注:sec是系统变量,用来记录当前时间中后面的秒位是多少秒。

  6、 将文件保存,运行试试看。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表