快速业务通道

Flash实例鉴赏:夏日可乐饮水机(3)

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-15

 三、细部处理和ACTION控制

  1.在场景的所有层的最下面新加入一个“ACTIONS”层,双击进入,输入ACTION:

_root.lock_take = false;

_root.full = false;

  这里预先设定了两个变量,意思分别代表杯子被拿起的LOCK_TAKE和水满变量FULL。

  2.打开“OBJ”层锁定,双击“CUP_DRAG”进行细部编辑;在“CUP_DRAG”内新建一个层“TEST”,在该层用“OVAL TOOL”画一个圆形,转换成标号“CUP_TEST”,“INSTANCE NAME”同样是“CUP_TEST”;(如图12)

      
              (图12)

  3.在“CUP_DRAG”内新建一个层“WATER”,位于最上方,其第1帧是空帧(“F7”),用手动绘画的方法,从第2帧开始到第11帧做一个水慢慢满的连续帧动画,新建一个层“ACTIONS”位于最上方,从第1帧到第11帧连续插入空帧,并在每帧输入ACTION: STOP();(帧排列形式如图13)

   
               (图13)


  ACTION 控制

  4.取消“CUP”层锁定,单击“CUP”,并按“CTRL+ALT+A”输入ACTION:

on (release) {
 if (not _root.full) {
  if (not this.took and not _root.lock_take) {
   _root.exp_1._visible=false;
   _root.exp_2._visible=true;
   _root.exp_3._visible=false;
   _root.exp_mov_1._visible=true;
   this.took = true;
   startDrag (this);
  }else{
   if (_root.cup_drag.cup_test.hitTest(_root.table_hittest.hitpoint)) {
     _root.lock_take = true;
     _root.start_bt_m._visible=true;
     _root.exp_2._visible=false;
     _root.exp_4._visible=true;
     _root.exp_mov_1._visible=false;
     _root.cup_ready=true;
   }else{
     _root.exp_2._visible=false;
     _root.exp_3._visible=true;
     _root.cup_ready=false;
   }
   this.took = false;
   stopDrag ();
  }
 }
}

  当鼠标被按下并且是弹起的时候会判断水满没满(FULL变量),接着会判断用户拿没拿起杯子(TOOK变量)和杯子放好没有(LOCK_TAKE变量),如果满足,那么会出现第2个提示信息EXP_2,箭头动画EXP_MOV_1会出现,杯子也会被锁定在鼠标上,既然是拿起了杯子,那么TOOK变量肯定是TRUE真的;而如果没有被拿起来的时候还会出现2种情况,即放好了位置(用HITTEST测试2个小圆圈的贴近程度)和没放好,如果放好了,那么一切第一阶段就结束了,会使LOCK_TAKE为真,这样用户就不可以拿起杯子,从而按照下一步指示进行操作(EXP_4),否则,会出现错误信息(EXP_3),说明你没有放好位置,会等待用户重新激活判定。


  5.按“CTRL+E”回到主场景,双击“START_BT_M”进入编辑状态,然后单击“START_BUTTON”,按“CTRL+ALT+A”输入ACTION:

on (press) {
 if (not _root.full) {
  _root.watering._visible = true;
  _root.start_bt_m.lock_fill = true;

 }
}

on (release) {
 if (not _root.full) {
  _root.watering._visible = false;
  _root.start_bt_m.lock_fill = false;
 }
}

输入好以后,按“CTRL+E”回到主场景,单击“START_BT_M”,按“CTRL+ALT+A”输入ACTION:

onClipEvent (load) {
 this._visible = false;
 this.lock_fill=false;
 this.fill_level=0;
}

onClipEvent (enterFrame) {
 if(this.lock_fill) {
  this.fill_level++;
  _root.cup_drag.gotoAndStop(this.fill_level % 10000 + 1);
  if(this.fill_level % 10000 >=12) {
   this.fill_level=0;
   this.lock_fill=false;
   _root.full=true;
   _root.start_bt_m._visible=fals

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号