当前位置:七道奇文章资讯设计学堂Flash设计
日期:2009-04-04 00:47:00  来源:本站整理

<b>深化理解ActionScript高级本领</b>[Flash设计]

赞助商链接



  本文“<b>深化理解ActionScript高级本领</b>[Flash设计]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Function毕竟是什么?

  我们习惯了function的存在,就像习惯了我们呼吸的空气却不去根究它的本质.看起来,仿佛function和Number, Boolean, String一样都是ActionScript本来就有的范例

  先看以下代码:

  trace (aFunc); //输出:[type Function]

  trace (aFunc instanceof Function); //输出:true

  trace (aFunc instanceof Object); //输出:true

  function aFunc() {

   trace (“This is aFunc!Excuted!”);

  }

  第一行奉告我们aFunc的范例是Function, 第二行又证实了这一点aFunc确切是一个Function范例的实例,第三行越发有意思奉告我们aFunc是一个Object.

  初学者大概很诧异,其实AS2.0中除了原始数据范例Number, Boolean, String,undefined, null,别的满是Object. 而AS3.0中则越发极度,一切皆对象.包含原始数据范例也是Object,只不过是特别的不变对象(immutable objects)范例.与主题扯远了,打住.:D

  Function本质上毕竟是怎样的一种Object?

  与其他编程语言差别,在AS中, Function是一个Object,可以有独立的属性乃至办法.比方arguments,callee,caller.在AS3.0中,Function还由更多的属性.

  函数一旦履行,一个特别的对象就成立了.我们称它为"active object",它含有以上的属性和本地变量.这个对象我们是不可拜候的,属于内建的机制.同时,每个Function都含有一个内置的范围链(scope chain),这时也将被成立,以使Flash Player来查抄全部的声明.函数可以层层嵌套,范围链也是如此.最大的范围链那当然是Global函数的范围链了,包含全部的全局变量和函数.

  第一行奉告我们aFunc的范例是Function, 第二行又证实了这一点aFunc确切是一个Function范例的实例,第三行越发有意思奉告我们aFunc是一个Object.

  初学者大概很诧异,其实AS2.0中除了原始数据范例Number, Boolean, String,undefined, null,别的满是Object. 而AS3.0中则越发极度,一切皆对象.包含原始数据范例也是Object,只不过是特别的不变对象(immutable objects)范例.与主题扯远了,打住.:D

  Function本质上毕竟是怎样的一种Object?

  与其他编程语言差别,在AS中, Function是一个Object,可以有独立的属性乃至办法.比方arguments,callee,caller.在AS3.0中,Function还由更多的属性.

  函数一旦履行,一个特别的对象就成立了.我们称它为"active object",它含有以上的属性和本地变量.这个对象我们是不可拜候的,属于内建的机制.同时,每个Function都含有一个内置的范围链(scope chain),这时也将被成立,以使Flash Player来查抄全部的声明.函数可以层层嵌套,范围链也是如此.最大的范围链那当然是Global函数的范围链了,包含全部的全局变量和函数.

  知道了Function 是Object又怎样?

  会给我们带来极大的便利和编程思维的改变:

  应用一:这是简单应用, 设立一个代理函数对象,按照条件的差别,将它指向差别的函数,实现动态改变.相信有经验的程序员都理解动态改变函数的便利性.并且由于AS供应了这种便利,应用这个特点可以衍生大量本领.
  

  var kingdaFunc:Function;

  var sex:String = "male";

  if ( sex == "male") {

  kingdaFunc = maleFunc;

  } else {

  kingdaFunc = femailFunc;

  }

  kingdaFunc(); //输出: I am a boy

  function maleFunc() {

  trace ("I am a boy");

  }

  function femaleFunc() {

  trace ("I am a girl");

  }

  应用二:成立函数履行行列.

  比方说,我有一个对象,我想按照差别的情形对它举行一系列的操作.但是有时需求全部的操作,有时又只需求一部份的操作.那么这个较高级的本领,就可以保证代码的高度重用性和简便.
  

  var funcAry:Array = new Array();

  //将需求的操作步骤加入行列

  funcAry.push(aFunc);

  funcAry.push(bFunc);

  funcAry.push(cFunc);

  //供操作的对象

  var originObject:Object = new Object();

  //需求履行几步由execQueue这个参数决意,在实际工程应用中这个数大概是动态决意的.

  var execQueue:Number = funcAry.length;

  /核心步骤:/函数行列履行.实际应用中可以把它包装成一个函数,大概一个类的实例.

  for (var i:Number =0; i
  funcAry[i](originObject);

  }

  //trace出履行操作后的originObject里面的内容

  for (var i in originObject) {

  trace ( i + ":" + originObject[i]);

  }

  //操作步骤a,b,c

  function aFunc(eObject) {

  eO.aFuncExected = true;

  trace ("aFunc()");

  }

  function bFunc(eObject) {

  eO.bFuncExected = true;

  trace ("bFunc()");

  }

  function cFunc(eObject) {

  eO.cFuncExected = true;

  trace ("cFunc()");

  }

  输出内容为:
  

  aFunc()

  bFunc()

  cFunc()

  cFuncExected:true

  bFuncExected:true

  aFuncExected:true

  
  前三行表明a,b,c三个函数按次序履行了.后三行表明orginObject确切经过了三步操作,多了三个为true的属性.

  黑羽提醒:本领可以再延深!

  可以通过一个函数来管理行列里面各个元素的位置,到达改变操作函数的次序.比方通过一个数组来安置调用次序
  

  var operationAry:Array = [2,1,0]
for(var i:Number = 0; i
  funcAry[operationAry[i]](originObject);

  }
  

  这样函数就通过2,1,0这样的倒序来履行操作.

  这个本领还有很多可以延伸的地方,比方说动态掌握操作函数的参数等等,供大家自己研究扩大.


  以上是“<b>深化理解ActionScript高级本领</b>[Flash设计]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .