青岛设计网标志 搜艺招聘
   Guest:  登陆 | 注册 | 网站首页 | 论坛首页 | 我的贴子 | 修改资料 | 留言板 | | 论坛帮助  | 论坛首页  

  论坛首页   FLASH  AS动作基本教程

[公告]快到[搜艺招聘网]发布招聘信息 注册简历、发布自己作品! :)  
AS动作基本教程   reply disable
    风雨

查看风雨的博客


金钱: 124
Level: 0
发帖数: 4
最后登陆: 2004/11/3
注册时间: 2004/10/19


[鍜界値鍚冧粈涔堣嵂]姣忓ぉ娉2琚嬶紝鍧氭寔30澶╋紝鍜界値濂藉鍒
信息 | 留言

ACTION SCRIPT 教程(申请置顶)
FLASH MX Actionscript教程
一 Actionscript基本术语解释


像其他脚本语言一样,Actionscript根据特定的语法规则使用特定的术语。以下将按字母顺序介绍重要的Actionscript术语,希望能对大家理解Actionscript有所帮助。


Actions(动作):是指导Flas在播放时执行某些操作的语句。
例如,gotoAndStop动作就可以将播放磁头转移到指定的帧或帧标识。


Actions(动作)也可以被称作statement(语句)。
:是允许将值传递给函数的占位符。例如,以下 语句中的函数welcome就使用了两个参数nrstName和hobby来接收值:
  funCtion WelCOme(firstName,hObby){
  WelcomeTeXt="Hell0,"firStName+"I See yOU enjOy"+hObby;
    }


lasses(类):是各种数据类型。用户可以创建"类"并定义对象的新类型。要定义对象的       类,用户需创建构造器函数。


Contnts(常量):   是不会改变的元素。常量对于值的比较非常有用。


Constructors(构造器):是用来定义"类"的属性和方法的函数。 以下代码通过创建Circle构造器函数生成了一个新的CircIe类:
   function Circle(x, y,radius){
      this.x=x;
      this.y=y;
      this.radius=radius;
       }


Data types(数据类型):是可以执行的千组值和操作。
Actionscript的数据类型包括:字符串、数值、逻辑值、对象和电影剪辑。


Events(事件):是在电影播放过程中发生的动作。例如,当电影载入时、当播放磁头到达某一帧时、当用户单击按钮或电影剪辑时、当用户按             压键盘上的按键时,都会产生不同的事件。


Expressions(表达式):是可以产生值的语句。例如,2+2就是一个表达式。


Functions(函数):是可以重复使用和传递参数的代码段,可以返回一个值。
例如,getPrope呵 函数就可以便用电影剪辑的实例名称和属性名称,返回属性值。getVersion函数可以返回当前播放电影的Flash播放器的版本。


Handlers(句柄):是可以管理诸如mouseDown或load事件的特殊动作。 例如,(onMouseEvent)和onClipEvent就是Actionscript的句柄。
Identtifiers(标识符):是用来指示变量、属性、对象、函数或方法的名称。标识符的首字母必须是字符、下划线(一)或美元符号($)。后续字符可以是字符、数字、下划线或美元符号。例如,firstName就是一个变量名。


Instances(实例):是属于某些class(类)的对象。每个类的实例都包含该类的所有属性和方法。


例如,所有电影剪辑实例都包含MovieClip类的属性 (透明度属性、可见性属性等)和方法 (例如gotoAndPlay、getURL等)。


Instancenames(实例名称):是一个惟一的名称。可以在脚本中作为目标被指定。


Keywords(关键字):是具有特殊意义的保留用词。例如,var就是一个关键字,它可以用来定义本地变量。

Methods(方法):是指定给对象的函数。在函数被指定给对象之后,该函数就可以被称为是该对象的方法。 例如,在以下示例中,clear就变成了conboller对象的方法:
      function Reset(){
       x_pos=0,
       x_pos=0,
      }
       controIler·clear=Reset;
       controIIer·clear();

Objects(对象):是属性的集合。每个对象都有自已的名称和值。
对象允许用户访问某些类型的信息。例如,AcdonSchpt的预定义对象Date就提供了系统时钟方面的信息。


Operands(运算项):是由表达式中的运算符操控的值。


Operators(运算符):可以从一个或多个值中计算获得新值。
例如, 将两个数值相加就可以获得一个新值。


Parameters(参数):也被称之为Argument(参数),请参考Arguments(参数)条目。


PropeMes(属性):是定义对象的a而butes(属性)。例如,所有电影剪辑对象都具有一v;sible(可见性)属性,通过该属性可以决定电影剪辑是否显示。


Targetpaths(目标路径):是Flas中电影剪辑名称、变量和对象的垂直分层结构地址。主时间轴的名称是_root。在电影剪辑属性检查器中可以命名屯影剪辑的实例。
用户可以通过目标路径使动作指向电影剪辑,也可以使用目标路径获取或设置变量的值。
例如,以下示例语旬就是电影剪辑stereoConbol内部的变量volume的路径:
     _root.steroControl.volume


Variables(变量):是存储了任意数据类型值的标识符。变量可以创建、修改和更新。变量中存储的值可以被脚本检索使用。在以下示例中,等号左边的是变量标识符,右边的则是赋予变量的值:
 X=5;
 name="Lolo";
 customer.address="66 7th Street";
 c=new Color(mcinstanceName);





二、Actonscript语法基础


Actionscript有自己的语法规则和标点符号,它们可以确定使用哪些字符和单词来创建 脚本以及按什么顺序来编写。
例如,在英语中,句点。表示一个句子的结束,而在Actionscript中,分号表示一个语句 的结束。

以下将介绍应用于所有 Actionscript的通用规则。绝大多数Actionscript条目还有其独特的需求。

1、 小点语法
在 Actionscript中,小点被用来指示和对象或电影剪辑相关联的属性或方法。它也可以被用来识别电影剪辑、变量、函数或对象的目标路径。小点语法表达式以对象名或电影剪辑名开始,后接小点,以要指定的元素结束。

  例如,电影剪辑的_x属性表示电影剪辑在舞台上的x轴位置,表达式ballMC.x则引用了     电影剪辑实例ballMC的_x属性。

   又如,如果在电影剪辑shoppingCart中嵌入了form电影剪辑,而在该电影剪辑内又设置了变量submit,则表达式shoppingCart.form.submit=true可以将form实例的submit变量值设置为true。

  按同样的模式可以表示对象或电影剪辑的方法。例如,使用ballMC实例的play方法可以在ballMC的时间轴中移动播放磁头。其语句如下:

   baIlMC·play();
  小点语法还可以使用两个特殊的别名:_root和_parent。_root引用的是主时间轴。使用_root可以创建绝对目标路径。例如,以下语句可以调用当前主电影中functions电影剪辑的buildGameBoard函数:
_root.functions.buildGameBoard();

使用_parent可以引用当前电影剪辑的上一级电影剪辑。使用了_parent可以创建相对目标路径。例如,如果电影剪辑mimal中嵌入了电影剪辑dog,则dog实例中的以下语句可以让animal电影剪辑停止播放:


_parent.stop();


2、大括号


  ActionSchpt语句使用大括号({})组合在一起,形成代码块。例
   on(release){
  myDate=newDate();
  currentMonth=myDate·getMonth();
   }

3、分号
  ActionSChpt语句使用分号作为结束。例如,以下语句中就使用了分号结束每条语句:
   column=passedDate.getDay();
    row=0;

  如果忽略了分号,Flash也能正确编译脚本。例如,上面的语句就可以写成以下格式:
      coLumn=passedDate.getDay()
      row=O
     但是,最佳做法还是应该使用分号。


4、圆括号
  当定义函数时,所有参数都放置在圆括号内。例如
   Function myFunction(name,age,reader){
      ...
     }

  当调用函数时,又需要使用圆括号将参数传递给函数。例如:
     myFunction("Steve",10,true);
  使用圆括号还可以越过ActionSchpt的优先级顺序,使ActionScpt语句更容易阅读。
在小点语法中,还可以在小点左边使用圆括号获取表达式的值。 例如,在以下示例语句中,圆括号内的子旬newcolor(this)就可以创建一个新的颜色对象求取其值:
  onClipEvent(enterFrame){
  (new Color(this)).setRGB(Oxffffff);
   }
  如果不使用圆括号,则需要在代码中添加语句:
  onClipEvent(enterFrame){
  myColor=newColor(this);
  myColor·setRGB(Oxfffffff;
   )

5、大小写字母
在Actionnscript中,只有关键字是区分大小写的,其他则无所谓。大家可以根据自己的需要使用大小写。例如,以下语句是等价的:
    cat·hilite=true;
    CAT hilite=trUe;
  但是,最佳的做法还是应该统一大小写规则,这样将使Actionscript代码中的函数和变量名称等更容易识别。

  正因为Actionscript不区分大小写,所以必须注意避免使用和Actionscript内置对象相 同的变量名。例如,以下语句是不允许的:
      dateqewDate();
  在上面的示例中,可以考虑使用myDate,theDate等变量名。如果关键字的大小写不对,则脚本将出现错误。在动作面板中,大小写正确的关键字将使用蓝色显示。

6、批注
在动作面板中,使用comment动作可以给脚本添加批注信息,以代码更容易阅读。如果在团队中工作或要给他人提供示例,则使用批还可以向其他开发人员传递信息。

  在选择comment动作之后,在脚本中将插入双斜杠字符(//)。例如
  on(release){
  //创建新的Date(日期)对象
    myDate=newDate();
    cmenMonth="myMonth·getMonth();
   //将月份的数字转换为月份名
   monthName=calcMonth(currentMonth);
   year=myDate.getfullYear();
   cmentDate=myDate.getDat();
 }
在动作列表中,批注以粉红色显示。可以添加任意长度的批注而不会影响导出文件的大小。它们也不必沿用Actionscript语法或关键字的规则。


7、关键宇
Actionscript在语言中保留了若干关键字以做特殊用途。不能使用它们作为变量名、函数或标签车。表1-3列出了Actionscript中的所有关键字。


   表1-3 Actionscript中的所有关键字
    Break      clse      instanceof      typeof
    CaSe      for       new          var
    Continue    function    return         void
    Default     if       switch         while  
    Delete     in        this          with


8、常量
常量也是一种属性,但是这种属性的值永远不会发生变化。
例如,常量BACKSPACE,ENTER,QUOTE,RETURN,SPACE 和TAB就是Key对象的属性,它们引用相应的键盘按键。例如,要测试用户是否按下了Enter键,可以使用以下语句:
   if(Key·getCode()=Key·ENTER){
   alert="是否开始游戏?";
   controIMC·go'toAndStop(5);
    }



第3楼




三、 Actionscript中的数据类型

数据类型描述了变量或Actionscript元素可以持有的信息种类。数据类型包含两大类:初始类和引用类。初始类数据类型又包括字符串值、数值和逻辑值,它们都有常量值,因此可以持有它们所代表元素的实际值。引用类数据类型包括电影剪辑和对象,它们的值是可变的,因此包含了对元素实际值的引用。此外还有两种特殊的数据类型:空值和未定义值。
每种数据类型都有自己的规则。本节将详细讨论这些规则。

  1、字符串值
  顾名思义,"字符串"就是由字符组成的序列。字符包括字母、数字和标点符号。在ActionSchript语句中,大家可以在单引号或双引号内输入字符串。字符串将被看作字符而不是变量。例如,以下语句中的L7就是一个字符串:

   favoriteBnd="L7";

  大家可以使用加号(十)运算符连接两个字符串。Actionscript将字符串开始或结束位置的空格看作是字符串的文字部分。例如,以下表达式将在逗号后面包含一个空格:

     greeting="Welcome,"+fistName;

  尽管Actionscript不会区分对变量、实例名称和帧标记引用中的大小写,但是文本字符串是区分大小写的。例如,以下语句就会在指定的文本域变量中放置不同的文本,因为hello和HELLO是文本字符串。

      invoice·display="HeLLo";
      invoice·display="HELLo";

  要在字符串中包含引号,需在引号前面先输入反斜杠符号(h),这被称为"转码"。在ActiohSchpt中还有其他一些字符也不能正常输入,必须通过这种转码的方式。
  
    表1-4列出了Actionscript中所有的转码字符。



       \ b          退格键(ASCll8)
       \f          换页符(ASCII12)
       \n          换行符(ASC1110)
       \r          回车符(ASC1113)
       \t          制表符(ASCII9)
       \"           双引号
       \"          引号
       \\          反斜杠
       \000-\377       按八进制指定的字节
       \x00-\xff       按十六进制指定的字节
       \u0000-uffff      按十六进制指定的16位Unicode字符

  2、数值

  数值数据类型是双精度浮动数值。用户可以使用算术运算符加(十)、减 (一)、乘 (")、除(/)、余数 (%)、递增 (十十)和递减 (一一)来操控数值。也可以便用内置的Math对象来操控数值。例如,以下示例就便用了sqn(平方根)方法返回100的平方根:
           Math·Sqrt(l00);
  3、 逻辑值
 逻辑值只有两种可能:要么为true,要么为flse。有时候Actionscript也会将逻辑值true和flse转换为1和0。逻辑值经常和逻辑运算符一起,被用于做出比较以控制脚本流程的Actionscript语句中。例如,在以下脚本中,如果变量password的值为true,则电影开始播放:
      onClipEvent(enterFRAME){
      lf(userName=ture &&password=ture){
       play();
        }
       }
4、 对象
  对象是属性的集合。每个属性都有自己的名称和值。属性的值可以是任何Flash数据类型,甚至是对象数据类型。这一特点允许用户在对象中安排或嵌入其他对象。要指定对象及其属性,可以便用小点运算符。
  例如,在以下语旬中,hoursWorked是weeklyStab的属性,而weeklySbts又是employee的属性:
     employee·WeeklyStats·hoursWOrked
  我们可以便用Actionscript的内置对象来访问和操控特定类型的信息。例如,MaT对象包含了若干种方法,可以对用户传递的数值执行数学运算。以下示例就使用了sqn方法:
     squweRoot=Math·sqn(l00);
  通过Actionscript的MovieClip对象包含的方法可以对舞台上的电影剪辑符号进行控制。例如,以下示例就使用了play和nextFrame方法:
    mcInstanceName.pIay();
    mc2InstanceName.nextFrame();
  我们还可以创建自己的对象,组织电影中的信息。要在电影中添加交互性,用户可能需要许多不同的信息。例如用户姓名、球的移动速度、购物车上的项目名称、己经下载的帧数、用户的邮政编码以及最后被按下的按键等。创建自定义对象就可以有效组合这些信息,简化脚本编写任务、重复使用脚本等。



  5、电影剪辑
  电影剪辑是Flas中可以播放动画的符号。它们是惟一引用图形元素的数据类型。电影剪辑数据类型允许使用MovieClip对象的方法控制电影剪辑符号。使用小点运算符可以调用电影剪辑对象的方法。例如:



    myClip.startDrag(ture);
    parentClip.getURL("网址);

  6、 空值
空值数据类型只有一个值:null ,它是对不存在值的引用。
  7、未定义值
末定义值数据类型有一个值:undefined,被用于尚未指定值的变量。



不经历风雨
怎么见彩虹
没有人能随随便便成功……

┤本图片及文字资料版权归 龙族酷少 和 Http://WwW.1yA.NeT ;共同所有。未经同意,请勿转载├

┤大学生闪客联盟论坛非常感谢 龙族酷少 的支持与参与├

2004-3-21 21:46:37  [广告] 大学生闪客联盟论坛棋馆,和网友们杀两盘吧!






第4楼




四、Actionscript中的变量


变量实际上就是一个信息容器。容器本身总是相同的,但是容器中的内容却可以修改。通过在电影播放时修改变量中的值,我们可以记录或保存由读者提供的信息、记录电影播放时改变的值或者判断某些条件的真假等。
  变量可以存放任何数据类型。包括数字值、字符串值、逻辑值、对象或电影剪辑等。
  通常存储在变量中的信息类型包括:URL 地址、用户名、数学运算结果、事件发生的次数或按钮是否被单击等。每个电影和电影剪辑都有自己的一组变量。每个变量都有独立于其他变量的值。
  1、命名变量

   变量名必须符合以下原则:
     (1)必须是标识符。
     (2)不能是逻辑值 (True和False)。
     (3)在自身范围内是惟一的。

  2、输入变量
  在Flash中,我们不必明确定义变量包含的数据类型。当变量被赋值时,Flash可以确定变量的数据类型。例如:
     X=3;
  在表达式x=3中,Flash将取得运算符右边的值,确定它是数值类型。此后的赋值语句又可能改变x的类型。例如,x="hello"语句可以将x的数据类型改为字符串值。没有赋值的变量其数据类型为undefined。
  Actionscript会在表达式需要时自动转换数据类型。例如,当我们将一个值传递给trace动作时,trace会自动将其值改变为字符串并发送到Output(输出)窗口。在包含运算符的表达式中,Actionscript会在需要时转换数据类型。例如,在和字符串连用时,加号(十)运算符会将其他运算项也转换成字符串:

   ¨Next in line,number"+7
  Actionscript将数字7转换为字符串"7",然后添加到第一个字符串的末尾,得到的结果是以下字符串:
     ¨Next in line,number7"

在调试脚本时,确定表达式或变量的数据类型是常用的手段。使用typeof运算符就可以做到这一点。例如:
      trace(typcof(variableNema));

要将字符串转换为数字值,可使用Number函数。要将数字值转换为字符串值,可使用string函数。

  3、 设置变量使用范围
  所谓变量的使用范围就是变量被认可和可以被引用的区域。在Actionscript中有3种类型的变量范围:

    本地变量    在自身代码块中有效的变量 (在大括号内)。
    时间轴变量   可以在使用目标路径指定的任何时间轴内有效。
    全局变量   即使没有使用目标路径指定,也可以在任何时间轴内有效 内有效。

我们可以使用var语句在脚本内申明一个本地变量。例如,变量i和j常用于循环计数器。在以下示例中,i被用作本地变量,它只存在于函数makeDays中:

     function makeDays(){
     var i;
     for(i=0;i<monthArray[month];i++){
     _root·Days·attachMovie("DayDisplay",i,i+2000);
     _root·Days[i]·num=i+1;
     _rOOt·DayS[i]·_X=COlumn*_rOOt·Days[i]·_Width;
     _root·Days[i]·_y=row*_root·Days[i]·_height;
     column="coumn+1;
     if(column==7){
      column=0;
      row=row+1;
      }
     }
  }
使用本地变量可以防止命名冲突,减少电影中可能发生的错误。例如,如果将name作为一个本地变量,则既可以在当前代码段中使用它来存储用户名,又可以在其他代码段中使用它存储电影剪辑的名称。因为它们都只在单独的范围内有效,所以不会发生冲突。

  较好的做法是在函数的主体中使用本地变量。本地变量只能在其自身的代码块中修改。如果在函数的表达式中使用了全局变量,则当全局变量的值在函数外被修改时,函数也将被修改。

  4、 申明变量
  要申明常规变量,可使用set varble动作或赋值运算符 (=),这两种方法获得的结果是一样的。

  要申明本地变量,可以在函数主体内使用var语句。本地变量只在自身的代码块中有效,超出该代码块即无效。

   要申明全局变量,可以在变量名前面使用_global标识符。例如,以下示例创建的就是一个全局变量myName:

     _global·myName="George";

  要测试变量的值,可以便用bace动作将变量的值发送到输出窗口。 例如,bace(hoursWorked)就可以将变量horsWorked的值发送到测试模式的输出窗口中。用户也可以在测试模式的调试器中检查和设置变量值。

  5、在脚木中使用变量
  如果要在表达式中使用变量,则必须先申明该变量。如果使用了一 个未申明的变量,则变量的值将是mdenned,脚本也将产生错误。
  例如:
  getURL(myWebSite);
  myWebSite="http:/,
申明变量mywebSite的语句必须首先出现,只有这样,getURL 动作中的变量才能被替换。
在脚本中,变量的值可以多次修改。变量所包含的数据类型影响到变量修改的方式和时间。初始数据类型 (例如字符串值和数值)都是通过值进行传递的,这意味着变量的实际内容被传递到变量中 在以下示例中,变量x被设置为15,在第2行中,该值被复制到变量y中。在第3行中,变量x的值被修改为30,但是变量y的值仍然保持为15,这是因为变量y不是引用了变量x的值,而是接受了在第2行传递的实际值15。
    Var x=I5;
    var y=x;
    var x=30;

  对象数据类型持有的是对值的引用。该引用就像一个指向变量内容的别名。当变量需要知道其值时,该引用就会询问内容并返回答案,其 间不需要给变量传输值。
以下就是一个通过引用进行传递的示例:
      VarmyArray=["tOm¨,"diCk"];
      VarneWArray=nyArray;
      myAmay[I]="jack";
      trace(newArray);
  以上代码创建了一个Array(数组)对象myArray,该对象包含两个元素。新创建的变量newArray被传递的值是对myArray的引用而不是实际值。这样,当myArray的第二个元素发生变化时,引用它的变量newArray也受影响。所以,trace动作发送到输出窗口中的内容是tom、 jack。
在下面的示例中,myArray 包含一个数组对象,所以它被按引用的方式传递给函数zeroArray。zeroArray函数改变了myArray中数组的内 容。

function zeroArray(myArray){
var i;
for(i=0;i<arry.lenght;i++){
array[i]==0;
}
}
var myArray=new Array();
myArray[O]==l;
myArray[l]==2;
myArray[2]==3;
Var OUt=ZerOArray(myArray)

函数zeroArray接受了数组对象作为参数并且将数组中所有元素的值都设置为0。它可以修改数组是因为该数组是按引用的方式传递的。

  对除电影剪辑之外的所有其他对象的引用被称之为"硬引用",因为如果该对象被引用,则该对象不能被删除。对电影剪辑的引用是一种特殊类型的引用,被称之为"软引用",软引用并不强求被引用的对象存在。如果某个电影剪辑被removeMovieClip这样的动作所删除,则所有对该电影剪辑的引用都不再有效。


山不在高 有仙则名
水不在深 有龙则灵
技不在精 努力必行



2004/11/3 20:47:12
信息 | 留言 | 引用 | 回复 | 编辑 | 置顶 | 移动 | 删除


青岛设计网版权所有
本论坛言论纯属发表者个人意见