网乐原科技

直播中

news center新闻中心
首页 > 资讯中心 > 软件技术

Flash5 ActionScript高级编程指南(5)

发布时间:2008-08-14     阅读数: 次       来源:网乐原科技
二、点语法对象与目标路径的使用

3、相关函数与指令

  eval(expression)是与点语法对象和目标路径的使用有关的最常用的函数。它的实质是把目标路径转化成点语法对象。系统先把expression自动转化成字符串,相当于调用了一次String(expression),得到"expression_string"的形式。这时的"expression_string"必须为目标路径形式(否则无返回值),然后返回"expression_string"所指代的内容。

  为什么说是内容而不说是值呢?这是因为eval(expression)的返回值实际上是一个点语法对象。比如:
  eval("anyMovieClip"+1)._x = 200;
仍是合法的语句。如果说._x的左边是一个值似乎就不合适了。类似的如前面提到的2.2式。故对于形如:
  c = a+eval("b");
的理解(设b的值为1)不应为c=a+1,而应该是c=a+b。在处理形如上述2.1式的表达式时,Flash5推荐使用eval函数,即写成:
  for (i=1;i<10;i++) {
    eval("myMovieClip"+i)._x = 20*i;
  }
另当"expression_string"指代的是一个影片片段时,返回的是形同_level0.anyMovieClip的绝对路径形式,所以就不能使用如_root.eval(expression)之类的调用了。

  with与tellTarget也是与点语法对象和目标路径密切相关的指令。其中with是Flash5中新增加的。它们的使用格式相同:
  with (expression) {
    ...
  }
  tellTarget (expression) {
    ...
  }
expression可以是点语法对象,也可以是目标路径。对于with来说,expression可指代对象和影片片段,而对于tellTarget来说,expression只能是影片片段。

  虽然它们形式上极为相仿(尤其当expression同指影片片段时),但处理过程却并不相同。试比较(a非myMovieClip的成员变量):
  a = 1;
  with (myMovieClip) {
    trace(a); // 2.3式
  }

  a = 1;
  tellTarget (myMovieClip) {
    trace(a); // 2.4式
  }
前者输出1,而后者输出空值。原因是tellTarget对它所包含的语句中的所有变量、对象等都加上expression所表示的路径,而with只对其中expression所指对象或影片片段内已经定义过的变量、对象等加上expression所表示的路径。所以2.3式就相当于with外的:
  trace(a);
而2.4式就相当于tellTarget外的:
  trace(myMovieClip.a);
当然,如果a本就是myMovieClip的成员的话,二者的输出就一样了。

网乐原科技

客服热线:0771-5761507

QQ:53290011

QQ邮箱:53290011@qq.com

工作时间:周一到周五 9:00-18:00

地址:广西南宁市江南万达写字楼C16栋1309室

物联网开发

关注我们

微信小商店 腾讯QQ客服 微信客服