11.3 制作计算器

时间:2007-09-30 来源:IT在中国 编辑:春雨 作者:春雨 [ ]
  11.3 制作计算器
2.符号响应功能
       所谓的符号响应实际上是指用于运算的加、减、乘和除四则运算的符号。在本例中,这三个符号本身没有运算功能,它仅仅用来设置一些参数、传递参数以及设置运算标识等。下面是四则运算的代码:
       下面的代码是加法符号的代码。其中,较多的是对全局变量的引用,需要用户了解一下它们的功能。
on mouseUp me
  global num,ent
  global divided
  global divisor
  global flag           --上述代码都是在引用全局变量
  set divided = num
  set divisor=""
  set num=""
  set flag = 4           --加法标志位为4
end
       在这些代码中,存在很多冗余的代码,即对于全局变量的声明。但是,这些都是Lingo语法的书写要求,如果在程序调试过程中产生变量赋值的错误,则需要先检查一下是否已经正确地设置了全局变量。
on mouseUp me
  global num
  global divided   --定义第一个运算数
  global divisor   --定义第二个运算数
  global flag     --引用运算标志
  set divided = num
  display
  set divisor=""
  set num=""
  set flag = 3—减法的运算标志为3
end
       和上述的代码相同,在乘法代码中同样调用了display子例程,通过该例程可以将组合的数值显示在指定的文本上,即计算器的显示屏幕上。
on mouseUp me
  global num
  global divided
  global divisor
  global flag
  set divided = num  --将获取的数值传递给第一个运算变量
  display
  set divisor=""
  set num=""
  set flag = 2       --乘法的运算标志为2
end
       在关于四则运算的代码中,读者要注意在每次调用了display子例程后系统的动作,即将运算的值清空,将用于获取数值的变量也清空,这样在执行下次操作时才能保证数据的准确性。
on mouseUp me
  global num
  global divided
  global divisor
  global flag
  set divided = num
  display         --显示数值
  set divisor=""    --及时清空
  set num=""
  set flag = 1    --除法的运算标志为1
end
       等号运算是这个实例中的控制部分,所有的数据都需要通过这里执行运算,并通过调用display显示数值。在这段代码中,我们使用了case选择语句来执行相应的操作,而执行的依据则是flag标志的值,详细代码如下:
global first,second,flag
on mouseUp me
  global num
  global divided
  global divisor
  global flag
  set divisor = num
  case (flag) of         --通过标志位来判断应该执行哪类运算
    "1":
      set num = string(divided / divisor)
    "2":
      set num = string(divided * divisor)
    "3":
      set num = string(divided - divisor)
    "4":
      set num = string(divided + divisor)
  end case
  second=num          --备份数据
  display
  first=0           --设置0标志位
  flag=5           --设置运算标志
end
       对于这个程序而言,如果使其能够与日常生活中所使用的计算器具有相同的功能,那么初始化程序是不可少的,下面是初始化的程序代码:
on mouseUp me
  global num
  global divided
  global divisor
  set num = ""
  set divided = ""
  set divisor = ""
  display
end
       通过上述代码我们可以发现,所谓的初始化实际上就是将参与运算的两个变量和一个用于产生数值的变量清空,从而使得计算器“屏幕”什么都不显示。
3.结果输出功能
       结果输出也是一个重要的模块,由于每执行一次运算,或者一个动作时都需要牵涉到输出,因此我们将其定义为一个子例程,以方便调用。另外,为了使得程序在任何时候都可以调用它,还需要将其放置到电影脚本中,该脚本的具体代码如下:
on display
  global num
  set member("number").text = num    --将num的值传递给number显示出来
  UpdateStage   --执行更新
end

11.3.3  补充程序功能

       上述的程序代码已经基本上实现了程序的功能。但是,还存在很多的漏洞使得这个计算器程序并不完美,因此在这里我们将对其中一些比较明显的部分进行优化,以达到更加真实的效果。首先,是对于0的输入问题,在每次执行程序时,第1个输入的数值不能为0,这是每一个计算器所必须实现的功能。第二,在程序上添加一个控制按钮,用于关闭程序。第三,更改程序的清空方式。关于这三个问题,下面以逐一解决。
1.解决0的问题
       在程序执行时,为了使输入的第一个数的值不为0,则可以在程序执行时使0暂时失效。具体的做法是在该按钮上添加一个判断语句,判断当前屏幕上是否有数值显示,如果有则在已有数字的末尾添加一个0,如果没有数字即member(”number”)的text属性为空,则不执行任何动作,修改后的代码如下:
global first,second,flag
on mouseUp me
  if member("number").text<>"" then  --检测0是否是第一个数值
    if flag=5 and first=0 then  
      global num
      num=""   
      first=1
    end if 
    if flag>5 then      --判断程序的执行情况
      num=second
      set num = num&"0"
    end if
    set num = num&"0"
    display
  end if        如果不是则执行上述代码
end
2.添加控制按钮
       控制按钮的功能主要用于关闭程序。在这里,我们将利用Photoshop制作两个差别不大的图片,如图11-75所示。
       
图11-75  制作按钮              
  
  图11-76  制作按钮
       (1)在角色表中选择light1图片,将其放置到舞台上,并将它的混合模式设置background Transparent,从而使其背景透明,此时的效果如图11-76所示。
       (2)在舞台上选择该图片,选择鼠标右键中的Script命令,在打开的脚本窗口中键入如下代码:
on mouseUp me
  quit           --单击鼠标退出应用程序
end
on mousewithin me
  sprite(me.spritenum).member=member("light2")    --更换角色
end
on mouseleave me
  sprite(me.spritenum).member=member("light1")    --还原角色
end
       在该按钮上产生了三个鼠标事件,分别是单击、进入和离开事件。其中,当鼠标单击该精灵时则退出应用程序,而当鼠标指针进入精灵的范围内则更换角色,离开时则还原角色,从而产生了按钮的动画效果。      
3.更改初始化方式
       关于初始化的思路是:每次在运行该程序时,使程序都处于原始状态,为此我们只需要在电影脚本中加入如下代码即可。
  global num
  global divided
  global divisor
  set num = ""
  set divided = ""
  set divisor = ""
  display
       这样,当我们每次启动程序时系统将会自动进行初始化,以避免以外。另外,这里提醒用户该脚本必须是电影脚本,如果读者将其定义为精灵脚本则不会产生作用。
       到这里为止,关于计算器程序的制作就全部完成了。在整个程序的执行过程中,使用了大量的全局变量,虽然它可以大大简化程序的实现方法,但同时也可能造成程序的混乱。最后,程序调试完成后,读者可以将其发布,使其成为单独的可执行程序。

上一页 [1] [2] [3] [4] [5] [6] [7] 


访问() 相关评论() 打印资源 返回顶部 加入收藏

最新评论