论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

尝试创建自己的 modal window

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:37:31


要使用对话框的时候可能会用flash自带的组件,不过有时候只想做个简单的效果,并且使用自己设计的样式,使用组件再更改skin未必太麻烦
这时候就想到自己做个mc代替,当需要对话框出现后背后的所有按钮不能点击时 通常会画一个很大的mc然后给个空的onRelease
如果用as动态创建的话那就更加灵活了,今天尝试写了一个,其中用到了DepthManager 类中的一些方法,通过阅读DepthManager 类的代码后会发现其中有好几个有用的函数,可以很方便地进行深度管理。
自制modal window参考文章 我是通过阅读这篇文章来学习的,强烈建议一看

Ex.


下载

这个例子中我将创建背景mc的方法写到了一个class中

 

Actionscript:
  1. import mx.managers.DepthManager;
  2.  
  3. class ModalWin extends MovieClip
  4. {
  5.        
  6.     private var modal_mc    : MovieClip;
  7.     private var parent_mc   : MovieClip;
  8.     private var dm       : DepthManager;
  9.    
  10.    
  11.     function ModalWin()
  12.     {
  13.         parent_mc = this._parent;
  14.         modal_mc = parent_mc.createEmptyMovieClip("ModalWinClass_mc"+getTimer(), parent_mc.findNextAvailableDepth(0,parent_mc.buildDepthTable(),"up"));
  15.         modal_mc.setDepthBelow(this);
  16.         modal_mc.onRelease = undefined;
  17.         modal_mc.useHandCursor = false;
  18.     }
  19.    
  20.    
  21. /**
  22. *
  23. * @param    col  背景颜色[默认白色]
  24. * @param    alp  背景透明度[默认50]
  25. **/
  26.     function createModal( col:Number, alp:Number) :Void
  27.     {
  28.         var _alp:Number = alp ? alp : 50;
  29.         var _col:Number = col ? col : 0xFFFFFF;
  30.         drawRect(_alp, _col);
  31.        
  32.     }
  33.    
  34.     function del() :Void
  35.     {
  36.         modal_mc.swapDepths(parent_mc.findNextAvailableDepth(0,parent_mc.buildDepthTable(),"up"));
  37.         modal_mc.removeMovieClip();
  38.         this.swapDepths(parent_mc.findNextAvailableDepth(0,parent_mc.buildDepthTable(),"up"));
  39.         this.removeMovieClip();
  40.     }
  41. /**
  42. * setter
  43. * set _x, _y, _width, _height
  44. */
  45.     function set modal_x(n:Number) :Void
  46.     {
  47.         modal_mc._x = n;
  48.     }
  49.     function set modal_y(n:Number) :Void
  50.     {
  51.         modal_mc._y = n;
  52.     }
  53.     function set modal_width(n:Number) :Void
  54.     {
  55.         modal_mc._width = n;
  56.     }
  57.     function set modal_height(n:Number) :Void
  58.     {
  59.         modal_mc._height = n;
  60.     }
  61.    
  62.    
  63.     private function drawRect(alp:Number, col:Number) :Void
  64.     {
  65.         with(modal_mc)
  66.         {
  67.             clear();
  68.             beginFill(col, alp);
  69.             moveTo(0,0);
  70.             lineTo(Stage.width, 0);
  71.             lineTo(Stage.width, Stage.height);
  72.             lineTo(0, Stage.height);
  73.             lineTo(0, 0);
  74.             endFill();
  75.         }
  76.     }
  77. }

 

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058