FLASH教程之ActionScript3.0教程:办法-Flash actionscript
此外,还支持α透明功能,能够设计人员在Flash视频中对诸如文本、矢量图像以及其它Flash元素等进行整合。poluoluo中心提醒:办法是利用function关头字界说的。与任何类属性一样,能够向办法使用任何类属性特征,包含private、protected、public、internal、static或自界说定名空间。
办法是类界说中的函数。创立类的一个实例后,该实例就会绑缚一个办法。与在类内部声明的函数分歧,不克不及将办法与附加办法的实例分隔利用。
办法是利用function关头字界说的。与任何类属性一样,能够向办法使用任何类属性特征,包含private、protected、public、internal、static或自界说定名空间。您可使用以下所示的函数语句:
publicfunctionsampleFunction():String{}大概,也能够利用分派了函数表达式的变量,以下所示:
publicvarsampleFunction:Function=function(){}多半情形下,您必要利用函数语句而不是函数表达式,缘故原由以下:
[*]函数语句更加简便易读。
[*]函数语句同意利用override和final关头字。
[*]函数语句在标识符(即函数名)与办法体代码之间创立了更强的绑定。因为可使用赋值语句变动变量值,可随时断开变量与其函数表达式之间的毗连。固然可经由过程利用const(不是var)声明变量来办理这个成绩,但这类办法并非最好的做法,由于这会使代码难以浏览,还会克制利用override和final关头字。
必需利用函数表达式的一种情形是:选择将函数附加到原型工具时。
机关函数办法
机关函数办法偶然复杂称为机关函数,是与在个中界说函数的类共享统一称号的函数。只需利用new关头字创立了类实例,就会实行机关函数办法中包含的一切代码。比方,以下代码界说名为Example的复杂类,该类包括名为status的属性。status变量的初始值是在机关函数中设置的。
classExample{publicvarstatus:String;publicfunctionExample(){status="initialized";}}varmyExample:Example=newExample();trace(myExample.status);//output:initialized机关函数办法只能是大众办法,但能够选择性地利用public属性。不克不及对机关函数利用任何别的会见把持申明符(包含利用private、protected或internal)。也不克不及对函数机关办法利用用户界说的定名空间。
机关函数可使用super()语句显式地挪用其间接超类的机关函数。假如未显式挪用超类机关函数,编译器会在机关函数体中的第一个语句前主动拔出一个挪用。还可使用super前缀作为对超类的援用来挪用超类的办法。假如决意在统一机关函数中利用super()和super,务必先挪用super()。不然,super援用的举动将会与预期不符。别的,super()机关函数也应在throw或return语句之前挪用。
上面的示例申明假如在挪用super()机关函数之前实验利用super援用,将会产生甚么情形。新类ExampleEx扩大了Example类。ExampleEx机关函数实验会见在其超类中界说的形态变量,但会见是在挪用super()之行进行的。ExampleEx机关函数中的trace()语句天生了null值,缘故原由是status变量在super()机关函数实行之前不成用。
classExampleExextendsExample{publicfunctionExampleEx(){trace(super.status);super();}}varmySample:ExampleEx=newExampleEx();//output:null固然在机关函数中利用return语句是正当的,可是不同意前往值。换句话说,return语句不得有相干的表达式或值。因而,不同意机关函数办法前往值,这意味着不成以指定任何前往值。
假如没有在类中界说机关函数办法,编译器将会为您主动创立一个空机关函数。假如某个类扩大了另外一个类,编译器将会在所天生的机关函数中包含super()挪用。
静态办法
静态办法也叫做类办法,它们是利用static关头字声明的办法。静态办法附加到类而不是类的实例,因而在封装对单个实例的形态之外的内容有影响的功效时,静态办法很有效。因为静态办法附加到全部类,以是只能经由过程类会见静态办法,而不克不及经由过程类实例会见。
静态办法为封装所供应的功效不单单在影响类实例形态的方面。换句话说,假如办法供应的功效对类实例的值没有间接的影响,该办法应是静态办法。比方,Date类具着名为parse()的静态办法,它吸收字符串并将其转换为数字。该办法就是静态办法,由于它其实不影响类的单个实例。而parse()办法利用暗示日期值的字符串,剖析该字符串,然后利用与Date工具的外部暗示情势兼容的格局前往一个数字。此办法不是实例办法,由于将该办法使用到Date类的实例并没有任何意义。
请将静态parse()办法与Date类的一个实例办法(如getMonth())比拟较。getMonth()办法是一个实例办法,由于它经由过程检索Date实例的特定组件(即month),对实例值间接实行操纵。
因为静态办法不绑定到单个实例,因而不克不及在静态办法体中利用关头字this或super。this和super这两个援用只在实例办法高低文中成心义。
与别的基于类的编程言语分歧,ActionScript3.0中的静态办法不是承继的。
实例办法
实例办法指的是不利用static关头字声明的办法。实例办法附加到类实例而不是全部类,在完成对类的各个实例有影响的功效时,实例办法很有效。比方,Array类包括名为sort()的实例办法,该实例办法间接对Array实例实行操纵。
在实例办法体中,静态变量和实例变量都在感化域中,这暗示利用一个复杂的标识符能够援用统一类中界说的变量。比方,以下类CustomArray扩大了Array类。CustomArray类界说一个名为arrayCountTotal的静态变量(用于跟踪类实例总数)、一个名为arrayNumber实例变量(用于跟踪创立实例的按次)和一个名为getPosition()的实例办法(用于前往这两个变量的值)。
publicclassCustomArrayextendsArray{publicstaticvararrayCountTotal:int=0;publicvararrayNumber:int;publicfunctionCustomArray(){arrayNumber=++arrayCountTotal;}publicfunctiongetArrayPosition():String{return("Array"+arrayNumber+"of"+arrayCountTotal);}}固然类内部的代码必需利用CustomArray.arrayCountTotal经由过程类工具来援用arrayCountTotal静态变量,可是位于getPosition()办法体中的代码能够间接援用静态arrayCountTotal变量。即便关于超类中的静态变量,这一点也合用。固然在ActionScript3.0中不承继静态属性,可是超类的静态属性在感化域中。比方,Array类有几个静态变量,个中一个是名为DESCENDING的常量。位于Array子类中的代码可使用一个复杂的标识符来援用静态常量DESCENDING。
publicclassCustomArrayextendsArray{publicfunctiontestStatic():void{trace(DESCENDING);//output:2}}实例办法体中的this援用的值是对办法所附加实例的援用。上面的代码申明this援用指向包括办法的实例:
classThisTest{functionthisValue():ThisTest{returnthis;}}varmyTest:ThisTest=newThisTest();trace(myTest.thisValue()==myTest);//output:true利用关头字override和final能够把持实例办法的承继。可使用override属性从头界说承继的办法,和利用final属性克制子类掩盖办法。有关具体信息,请参阅掩盖办法。
get和set存取器办法
get和set存取器函数还分离称为getter和setter,可使用这些函数为创立的类供应易于利用的编程接口,并遵守信息埋没和封装的编程准绳。利用get和set函数可坚持类的公有类属性,但同意类用户会见这些属性,就像他们在会见类变量而不是挪用类办法。
这类办法的优点是,可制止呈现具有不有用称号的传统存取器函数,如getPropertyName()和setPropertyName()。getter和setter的另外一个优点是,利用它们可制止同意举行读写会见的每一个属性有两个面向大众的函数。
上面的示例类名为GetSet,个中包括名为publicAccess()的get和set存取器函数,用于供应对名为privateProperty的公有变量的会见:
classGetSet{privatevarprivateProperty:String;publicfunctiongetpublicAccess():String{returnprivateProperty;}publicfunctionsetpublicAccess(setValue:String):void{privateProperty=setValue;}}假如实验间接会见属性privateProperty,将会产生毛病,以下所示:
varmyGetSet:GetSet=newGetSet();trace(myGetSet.privateProperty);//erroroccursGetSet类的用户所利用的工具显现为名为publicAccess的属性,但实践上这是对名为privateProperty的private属性实行的一对get和set存取器函数。上面的示例将实例化GetSet类,然后利用名为publicAccess的大众存取器设置privateProperty的值:
varmyGetSet:GetSet=newGetSet();trace(myGetSet.publicAccess);//output:nullmyGetSet.publicAccess="hello";trace(myGetSet.publicAccess);//output:hello利用getter和setter函数还能够掩盖从超类承继来的属性,这是利用惯例类成员变量时不克不及做到的。在子类中不克不及掩盖利用var关头字声明的类成员变量。可是,利用getter和setter函数创立的属性没有此限定。能够对从超类承继的getter和setter函数利用override属性。
绑定办法
绑定办法偶然也叫做闭包办法,就是从它的实例提取的办法。作为参数传送给函数的办法或作为值从函数前往的办法都是绑定办法。在ActionScript3.0中,新增的绑定办法相似于闭包函数,个中保存了辞汇情况,即便从实在例中提掏出来也是云云。绑定办法与闭包函数之间的次要分歧不同是,绑定函数的this援用保存到完成办法的实例的链接或绑定。换句话说,绑定办法中的this援用老是指向完成办法的原始工具。关于闭包函数,this援用是通用的,这意味着挪用函数时,该援用指向与函数联系关系的任何工具。
假如利用this关头字,懂得绑定办法就很主要。从头挪用this关头字可供应对办法父工具的援用。年夜多半ActionScript程序员都但愿this关头字老是援用包括办法界说的工具或类。可是,假如不利用办法绑定,并非老是做到如许。比方,在之前版本的ActionScript中,this援用其实不老是援用完成办法的实例。从ActionScript2.0的实例中提取办法后,不仅this援用不绑定到原始实例,并且实例类的成员变量和办法也不成用。在ActionScript3.0中不存在如许的成绩,这是由于将办法看成参数传送时会主动创立绑定办法。绑定办法用于确保this关头字老是援用在个中界说了办法的工具或类。
上面的代码界说了名为ThisTest的类,该类包括一个名为foo()的办法(该办法界说绑定办法)和一个名为bar()的办法(该办法前往绑定办法)。类内部的代码创立ThisTest类的实例,然后挪用bar()办法,最初将前往值存储在名为myFunc的变量中。
publicvarsampleFunction:Function=function(){}0代码的最初两行标明:固然前一行中的this援用指向全局工具,但绑定办法foo()中的this援用仍旧指向ThisTest类的实例。别的,存储在myFunc变量中的绑定办法仍旧能够会见ThisTest类的成员变量。假如以上代码在ActionScript2.0中运转,this援用会婚配,但num变量将为undefined。
绑定办法最值得注重的一种情形是利用事务处置函数,由于addEventListener()办法请求将函数或办法作为参数来传送。
FlashScreensaversMaker能够迅速的将您的Flash作品转化为屏保程序。 常见的富媒体广告形式有横幅广告(BANNER,旗帜广告)按钮广告(BUTTON)弹出窗口广告(pop-upads,弹窗)浮动广告(flotingads,飘浮广告,floaters)插播式广告(Interstitial)全屏广告(fullscreen) Rich Media并不是一种具体的互联网媒体形式,而是指具有动画、声音、视频和/或交互性的信息传播方法。 FLASH广告的问题主要表现在: Flash是一种以向量图方式制成的网页动画,相比MPEG,AVI等的影片的档案大小就小很多. 不能设置“alt”属性,失去了一次被搜说引擎检索到的机会。 Flash也可以合成简单的JavaScript函数。如果你学过某种脚本语言如JavaScript或者Macromedia的Director Lingo,你会知道这有点令人畏缩。 Flash是一种以向量图方式制成的网页动画,相比MPEG,AVI等的影片的档案大小就小很多. 传播上的优势——无国界跨媒体;创作群体的形成;媒体及比赛的推进
页:
[1]