关闭

关闭

关闭

封号提示

内容

首页 计算机科学与技术外文翻译

计算机科学与技术外文翻译.doc

计算机科学与技术外文翻译

艾尔小茜茜
2019-02-10 0人钱柜777手机版登陆 0 0 0 暂无简介 举报

简介:本文档为《计算机科学与技术外文翻译doc》,可适用于自然科学领域

毕业设计(论文)外文资料原文及译文专业计算机科学与技术班级学号姓名高芸芸指导教师吴敏原文出处:FlashActionScriptBible,JoeyLottandRobertReinhardt,PublishedbyWileyPublishing,IncFlashActionScriptBibleJoeyLottandRobertReinhardtUnderstandingDatatypesWhenwetalkaboutdata,we’retalkingaboutinformationorvaluesThesevaluescanbeofmanytypesForexample,eveninaverysimplemovieyoumightstillhaveanumber,sometext,andaMovieClipinstanceAllthreeoftheseexamplesaredataofdifferenttypeswhatActionScriptcallsdatatypesFlashisactuallycapableofperformingdatatypeconversionswhennecessaryHowever,thiscanleadtosomepoorcodingpracticesonthepartofActionScriptdevelopersForthisreason,theActionScriptstandardsrequirethatyoupaycloserattentiontothedatatypesyouareusingInActionScript,you’llworkwithmanydifferentdatatypesHowever,forthesakeofunderstandinghowthesedatatypeswork,youcanconsiderthemintwobasiccategories:primitivetypesandreferencetypesTheprimitivetypesarecalledprimitivebecausetheyarethebasicfoundationaldatatypes,notbecausetheylackimportanceThereferencedatatypesarecalledrefeitiesofwidgetsaswellascogs,nQuantitymightnotbesufficientlyclearItwouldbebetter,insuchacase,tohavevariablesnamednQuantityCogandnQuantityWidget,forexampleThemoredescriptivethevariablename,thebetter,inmostsituationsJustremember,though,thatmostlikelyyou’llbetypingthesamevariablenamemultipletimes,soitisimportanttoachievethecorrectbalancebetweendescriptivenessandnamelengthYoucanalwaysuseabbreviationsinthevariablenamesifappropriateForexample,ratherthandefiningavariablenamednQuantityWidgetyoumightfinditeasiertodefineavariablenamednQntyWidgetRememberthatyoucannotusespacesinyourvariablenamesHowever,whenyouwanttomakeyourvariablenamesdescriptive,thenameswilloftenconsistofmorethanonewordTherearetwoconventionsthatarecommonlyusedwhennamingvariableswithmultiplewordsThefirstofthetwoconventionsistousetheunderscore()toseparateyourwordsinthevariablenameAnexampleofthismethodfollows:varsFirstname:String=“Joey”ThesecondoftheseconventionsiswhatisknownastheinterCapmethod(alsoknownasstudlyCapsorcamelCaps)Theword“interCap”referstothecapitalizationofthefirstletterofeachwordsubsequenttothefirst,usingnospacesorunderscoresinternalcapitalizationAnexampleofthismethodisthefollowing:varsFirstName:String=“Joey”ItwouldbehooveyoutouseoneoftheseconventionsPickonethatyoulike,andifyoudecideyouprefertheotheronelateron,switchtoitInthisbookwetendtoprefertheinterCapmethod,soyouseeapreferenceforitintheexamplesButneitherconventionismorecorrectoroffersanyadvantagesovertheotheroneItisalsoimportanttorememberthatActionScriptiscasesensitiveThismeansthatsFirstName,sFirstname,SfirstName,andsoonarealldifferentvariablesIfyouaccidentallytypethenameofavariablewithincorrectcapitalization,theresultwillbethatFlashwillnotrecognizethatthevariableisdefinedHereisanexample:varsFirstName:String=“Joey”trace(sFirstName)Displays:Joeytrace(sfirstName)Displays:undefinedUsingExpressionsAnyonewhohastakenevenverybasicarithmetic(usingadditionandsubtractionandthelike)hasworkedwithexpressionsExpressionsaresimplythosepartsofstatementsthatevaluatetobeequaltosomethingHerearesomeverysimpleexamples:“abcd”nQuantityEventhoughtheseexamplesarealleithersimplevaluesorvariables,theyallevaluatetoasinglevalue,andtherefore,areconsideredexpressionsSlightlymorecomplex(althoughstillsimple)expressionsmightlooksomethinglikethis:“a”“b”nQuantity*nPriceExpressionsareanimportantpartofActionScriptYouuseexpressionsinallkindsofsituationsForexample,youcanuseanexpressionwithinatrace()statement:trace(“Welcome!”)Youcanalsouseexpressionsinvariableassignmentstatements:varnQuantity:Number=varnPrice:Number=varnTotal:Number=nQuantity*nPriceWe’llalsolookatotherkindsofexpressionsthatperformcomparisonsandtestsForexample:<==Intheprecedingexamples,weusecomparisonoperatorstodeterminehowtwovaluescompareThefirstexpressionisdeterminingwhetherislessthanThatexpressionevaluatestotrueThesecondexpressiondetermineswhetherisequaltoThatexpressionevaluatestofalseTherearemanyotherexamplesofexpressions,andwe’llexaminesomeofthemthroughouttherestofthischapterWorkingwithOperatorsAsyouhaveseen,expressionscanbecomposedofasinglevalueButexpressionscanalsobemorecomplexbycombiningseveraldifferentvaluestomakeoneexpressionInexpressionsinvolvingmultiplevalues,therearetwotypesofActionScriptelementsinvolved:operandsandoperatorsTheoperandsarethevaluesonwhichtheoperationactsTheoperatorsdeterminetheactiontakenIntheexpression,forinstance,therearetwovalues,oroperandsandandthereisoneoperator:theplusoperator()IntheActionstoolboxyoucanseethattheoperatorsaregroupedintosixcategories:arithmetic,assignment,bitwise,comparison,logical,andmiscellaneousThefollowingsectionstakeacloserlookateachofthesegroups,andtheoperatorsofwhichtheyarecomposedWe’lllookateachofthesegroupsintheordertheyarelistedintheActionstoolbox,withtheexceptionofthebitwiseoperatorsWe’lllookatthebitwiseoperatorsaftertherestbecause,exceptinspecializedsituations,youaremorelikelytousetheotheroperatorsthanyouaretousebitwiseoperatorsWorkingwithArithmeticOperatorsThearithmeticoperatorsshouldbefamiliartoyoubecausetheyare,forthemostpart,theoperatorsyouusedinmathclassTheyaretheoperatorsusedonnumberoperandsformathematicalcomputationsTheresultofanoperationusinganarithmeticoperatorisanumbervalueTablelistsallthearithmeticoperatorsTable:ArithmeticOperatorsOperatorNameExampleResultPlusxyxyMinusNegationx–yxx–yx*()*Multiplyx*yx*yDividexyxyModuloxyRemainderofxyTheaddition,subtraction,multiplication,anddivisionoperatorsdon’treallyrequireanydiscussionTheyworkjustasyouwouldexpectthemtoThemodulooperator()maybenewtoyouEvenifitisnotnew,youmightneedalittlerefresheronwhatitdoesQuitesimply,itreturnsthevalueoftheremainderafterthefirstoperandisdividedbythesecondInthefollowingexample,weusethemodulooperatorwithavariablenYearandthesecondoperandofTheresultisThismeansthatisdivisiblebyInpracticalterms,theimplicationofthisisthattheyearisaleapyearvarnYear:Number=trace(nYear)Displays:Alsoworthpointingoutisthattheminusandnegationoperatorsusethesamecharacter,butoperatedifferentlyThenegationoperatorhasthesameeffectasmultiplyinganumberby–Forexample,thisoperation:y=xisthesameasthisoperation:y=x*()WorkingwithAssignmentOperatorsTablepresentsaratherdauntinglistofoperatorsthatallfallunderthecategoryofassignmentoperatorsButdon’tbescaredoffjustyetInfact,thereisonlyonefundamentaloperatorinthebunchtheequalssign(=)ThisoneshouldnotbeanewoperatortoyouItdoesjustasyouwouldexpectittodo:ItassignsthevalueoftheoperandontherighttotheoperandontheleftTheremainderoftheoperatorsarecompoundassignmentoperatorsthatfunctionasshortcuts,asyou’llseeinamomentInthefollowingexample,theoperandontheleft(nQuantity)isassignedthevalueoftheoperandontheright():nQuantity=Ofcourse,youmightwanttouseexpressionsthatareslightlymorecomplexthansimplynQuantity=Youmight,forinstance,wanttoaddseveraloperandstogetherontherightsideoftheequalssignoperator,asinthefollowing:nQuantity=Inthiscase,younoticethattheadditiontakesplacebeforetheassignmentInotherwords,nQuantityisassignedthevalueofthesumof,,and,notjustthevalueofThisisduetotheoperatorprecedenceoftheplusoperator()beinggreaterthanthatoftheassignmentoperator(=)Seethesectionlaterinthischaptertitled“ConsideringOperatorPrecedence”Additionally,youcanfindacompletelistofoperatorsandtheirprecedenceintheFlashHelpsystemTable:AssignmentOperatorsOperatorNameExampleWhatItMeans=Equals(assignment)x=yx=y=Addbyvaluex=yx=xy=Subtractbyvaluex=yx=xy*=Multiplybyvaluex*=yx=x*y=Dividebyvaluex=yx=xy=Modulobyvaluex=yx=xy<<=Leftshiftbyvaluex<<=yx=x<<y>>=Rightshiftbyvaluex>>=yx=x>>y>>>=Rightshiftzerofillbyvaluex>>>=yx=x>>>y=BitwiseANDbyvaluex=yx=xy|=BitwiseORbyvaluex|=yx=x|y^=BitwiseXORbyvaluex^=yx=x^yAsmentioned,thereisreallyonlyonefundamentaloperatorintheassignmentoperatorcategorytheequalssignEachoftheadditionaloperatorsmerelysavesyousometimetypingForexample,thefollowingexpression:nQuantity=istheshorthandversionofthefollowing:nQuantity=nQuantityEitherofthetwoprecedingexpressionsmeansthatyouwantFlashtoaddtothecurrentvalueofnQuantityItjustsohappensthattheformervariationisshorterandquickertotypeTheoperatorsthatarecompoundedwiththeequals(=)operatorareeithermathematicaloperatorsorbitwiseoperators(coveredinthefollowingsectionsofthischapter)Ineachcase,thecompoundoperatorfollowsthesamepatternForexample:nQuantity*=isthesameas:nQuantity=nQuantity*WorkingwithComparisonOperatorsComparisonoperatorsallowyoutocompareoperandsTheresultofacomparisonisaBooleanvalue:trueorfalseTheseoperatorsaremostoftenusedinexpressionscalledconditionalswithinifelseblocks,andcontrolofflowexpressionswithinforandwhileblocks(Youlearnaboutthesetypesofstatementslaterinthischapter)Butthebasicpremiseisthatiftheconditionalexpressionevaluatestotrue,ablockofcodeisexecuted,andifitevaluatestofalse,theblockofcodeisskippedoverUsingcomparisonoperators(seeTable),youcancomparestrings,numbers,andBooleanvaluesTheseprimitivedatatypesareequalonlyiftheycontainthesamevalueYoucanalsocomparereferencedatatypessuchasobjects,functions,andarraysButreferencedatatypesareequalonlyiftheyreferencethesameobject,whetherornottheycontainthesamevalueTable:ComparisonOperatorsOperatorName==Equals!=Notequals>Greaterthan<Lessthan>=Greaterthanorequal<=Lessthanorequal===Strictequality!==StrictinequalityPerhapsthemostcommonmistakemadeinprogrammingisconfusingtheequalityequalsoperator(==)withtheassignmentequalsoperator(=)Infact,evenamongseasonedprofessionals,itisnotuncommontomakethiserroronoccasionThedifferenceissotinyinprint,buttheresultissodrasticTake,forinstance,thefollowingexample:varnQuantity:Number=if(nQuantity=){trace(“ifconditiontrue”)}trace(nQuantity)WhatwouldyouexpectthiscodetodoEvenifyoudon’tknowwhatsomeofthecodestructuresmean,youcanprobablyfigureoutthatafternQuantityisassignedavalueof,youwantthecodetochecktoseeifnQuantityisequaltoIfthatconditionistrue,itshouldwriteamessagetotheOutputpanelFinally,itwritesthevalueofnQuantitytotheOutputpanelYoumightexpectthatthefinalvalueofnQuantityisstillButbecausethewrongoperatorwasmistakenlyusedintheifcondition(nQuantity=),nQuantityhasbeenassignedthevalueof!CanyouseetheproblemsthathavebeencausedbyonemissingcharacterSo,thecorrectedcodelooksmorelikethis:varnQuantity:Number=if(nQuantity==){trace(“ifconditiontrue”)}trace(nQuantity)AnydatatypecanbecomparedusingtheequalityoperatorsStringcharactersarefirstconvertedtotheASCIIvaluesandthencompared,characterbycharacterTherefore,“a”islessthan“z”andlowercaselettershavehighervaluesthantheiruppercasecounterpartsTablesandshowexamplesofnumbersandstringsbeingcompared,usingtheequalityoperatorsalongwiththeresultingvalueoftheexpressionTable:NumberComparisonExpressionResult==true!=false>false<false>=true<=trueTable:StringComparisonExpressionResult“Joey”==“Joey”true“joey”!=“Joey”true“joey”>“Joey”true“Joey”<“Joseph”trueTheonlytwooperatorsinthiscategorythatyouhavenotyetlookedatarethestrictequality(===)andstrictinequality(!==)operatorsTheseoperatorsworkmuchlikethenonstrictcounterparts(==and!=)withonedifference:Theydon’tperformdatatypeconversionsautomaticallyWhatthismeansisthatwhenusingtheregularequalityequalsoperator(==),FlashautomaticallyconvertstheoperandstothesamedatatypebeforetestingforequalityTherefore,thevaluesand“”areequalwhentestingusingtheregularequalityoperator(==)butnotwhenusingthestrictequalityoperator(===)TablegivessomeexamplesofthedifferencebetweenusingregularandstrictequalityoperatorsTable:StrictEqualityandInequalityOperatorsRegularRegularResultStrictStrictResult==true===true!=false!==false==””true===””false!=””false!==””true译文:FlashActionScript宝典美JoeyLott,RobertReinhaedt著Wiley出版社FlashActionScript宝典JoeyLott,RobertReinhardt了解数据类型只要谈到数据就会谈到值。这些值可以有许多类型。例如即使在一个非常简单的影片中也会有一个数字、一些文本和一个MovieClip实例它们都是具有不同类型(在ActionScript中称之为数据类型)的数据。实际上Flash可以在需要的时候执行数据类型转换。但是这可能会使Acti。nScript开发者养成某些拙劣的编码习惯。因此ActionScript标准要求对正在使用的数据类型给予足够的注意。在ActionScript中将使用许多不同的数据类型。但是为了了解这些数据类型如何工作可以认为它们有两种基本的分类简单类型和引用类型。简单数据类型之所以被称之为”简单”类型是因为它们是基础的数据类型而不是因为它们缺乏重要性。引用数据类型之所以被称之为”引用”类型是因为它们引用简单类型。简单数据类型包括字符串(String)、数字(Number)、布尔型(Boolean)、undefined和。我们将在本章中更多地介绍这些简单数据类型。引用数据类型就是所有的对象它们是本书其他章节的主题因此我们将对引用数据类型的主要讨论留到后面的章节中。使用字符串数据字符串是多个字符或多个宇。字符串的值必须用单引号或双引号引起来。下面是几个字符串的例子:“a”‘b’“l”“Joey”‘’‘abc’“****”只要想使用多个字符或多个宇就要使用字符串。例如可以使用字符串来填充影片中的文本区域或者使用字符串通过程序给新的MovieClip实例创建一个名字。我们已经见过如何在动作中使用字符串了如trace()中的字符串。Trace()动作要求开发者给它提供一条在Output面板中显示的消息这条消息就必须是字符串值:trace(“IknowhimMarley’sGhost!”)如前所述当定义一个字符串值时可以使用双引号或单引号。究竟选择哪一个常常完全是由个人爱好所决定的。但是如果想让代码不出错误有两个规则还是必须遵守的:第一必须对每个开始的引号匹配一个结束的引号。第二使用哪种类型的引号来开始字符串就必须用哪种类型的引号来结束字符串。换句话说不允许有不匹配的引号。下面是两个正确匹配了引号的例子:“hereisastring”‘hereisastring’下面是三个没有正确匹配引号的例子:“hereisastring’‘hereisastring”“hereisastring有些时候更多的个人爱好可能会限制选择使用哪种类型的引号。试一试下面的例子请注意会发生的事情:trace(‘IknowhimMarley’sGhost!’)这行代码实际上会产生一个错误因为它认为撇号是结束的引号所以它就不知道用这个字符串的剩余部分做什么了。如果在字符串两边使用双引号就可以很容易地修改这个错误了:trace(“IknowhimMarley’sGhost!¨)反之亦然。如果想在一个字符串中将一个双引号标记当做一个字符来用可以在整个值的两边使用单引号。如果想在一个字符串中将单引号和双引号标记两者都当做字符来用问题就来了。有一个简单的方法来处理这个问题:使用特殊字符。有关特殊字符的详细内容请参见第章。使用数字数据在Flash中所有的数字都被当做“数字”数据类型。正数、负数、浮点数、整数等都被简单地认为是数字这通常不需要做进一步的解释。为了定义一个数字只需要输入不带任何引号的数字即可。下面是几个数字的例子:数字数据类型可以执行各种数学运算如下面的例子所示:trace()显示trace(–)显示trace()显示了解什么时候使用数字而什么时候使用字符串是重要的。假如在实际上想用一个数字的时候却用了一个字符串就会得到不希望的结果。例如trace("""")显示在这个例子中结果值是“”而不是(所希望的)。这是因为ActionScript将这两个值当做字符串并将它们“连接”起来而不是当做数字值将它们加起来。当然还应该了解把数字当做字符串也有些合理的原因o例如尽管电话号码是由数字组成的但通常还是把它当做字符串o如果想用空格、括号、破折号等来对电话号码进行格式设置就需要将电话号码放入引号中当成字符串来用。使用布尔数据布尔数据是只能取true(真)和false(假)两个值的数据。在Flash影片中布尔变量常用于测试条件。布尔值常用于条件语句(如if语句)和控制结构(如for和while语句)的条件表达式中。有关条件语句和控制结构的详细内容请参见本章后面的“使用控制流程的语句控制结构”一节。理解undefined和数据类型ActionScript有两个另外的基本数据类型undefined(未定义)和(空值)。开发者应该熟悉它们。为了更好地理解这些数据类型先熟悉变量是有用的。因此我们将在本章的后面交替地讨论这两种数据类型和变量。转换数据通过被称为“转换(Casting)”的方法ActionScript允许你告诉Flash将一个值转换成一个指定的数据类型。当转换一个值时使用如下语法:Datatype(value)例如可以像下面这样将一个字符串转换成数字:Number(“”)当转换数据时必须小心。某些转换可能会产生不希望的结果。例如数宇可以被转换成布尔值false任何非零值将被转换成true例如:trace(Boolean()):显示falsetrace(Boolean())显示true因此如果转换true和false的字符串值它们两者都将被转换成布尔值true因为这两个字符串的值都是非零值:氛参使用变量trace(Boolean(“true”))显示truetrace(Boolean(“flase”))显示true使用变量在Flash影片中将会用到许多数据。现在由于这些数据到处都是所以我们打算用某种办法来跟踪它们。这就是变量变得有用的原因。变量是一个可以用来保存或引用某个特殊数据的命名了的容器。一旦创建了一个变量就可以在该变量中保存和取回数据。尽管一个变量一次只能容纳一个值但可以使用同一个变量在不同的时候容纳或引用不同的数据。例如如果创建了一个名为nYear的变量它在一个时候可以容纳这个值但在另一个时候可以容纳这个值。用一个出租仓库空间来比喻一个交量。可以租一个空间(声明变量)租了之后就可以在那个空间放置东西了(给变量赋值)。后来可能想看一下仓库空间中放置的东西(从变量中取回数据)或者可能决定在该仓库空间中放置别的东西(给同一个变量赋予一个新值)。当用这块仓库空间办完事后可以不再租用它(删除该变量)。声明变量在能有意识地使用一个变量之前必须首先声明它以使其存在。Flash和ActionScript允许使用强化输入法来声明变量o强化输入法表示当创建一个变量时指定它可以保存的数据类型。当导出影片时Flash就确保用户始终想向那个变量中存入正确数据类型的数据。如果Flash在任何时候发现没能匹配该变量的数据类型就会产生一条出错消息提醒用户注意这个实际情况。这有助于确保Flash应用程序是用良好的编程习惯进行周密的规划和设计的。为了用强化输入法来声明变量请使用如下的格式:varvariableName:Datotypevar关键宇让Flash知道正在声明一个变量。变量名由用户取但它应该遵守变量的命名规则(参见下一节“命名变量”)。用冒号来分隔变量的名字和数据类型的名字在名字、冒号、数椐类型之间不应该有空格。如果启用了代码提示就会获得一个内置数据类型的下拉列表可以从该下拉列表中选择数据类犁。另外如果定义过自己的自定义数据类型(参见第章)也可以声明一个那种数据类型的变量。还可以看到该行是用一个分号来结束的。下面的例子声明了一个名为nQuantity的数字数据类型的变量:varnQuantity:Number现在已经声明了一个名为nQuantity的变量并且已经告诉Flash赋予该变量的所有值都必须是数字。变量已经被创建了但还没有给它定义任何值。如果用trace()来显示该变量的值就可以知道的确是这样:trace(nQuantity)当对它进行测试时会见到undefined值出现在Output面板中。undefined值是一个特殊的值Flash用它来表示还没有被赋予任何值的变量。变量一旦被声明了就可以通过使用一个具有等于符号的简单赋值语句来给它赋值:varnQuantity:NumbernQuantity=还可以在一行中声明一个变量并对其赋值或初始化该变量varnQuantity:Number=除了undefined值还有另一个特殊的值,可以将它赋予一个变量表示该变量没有容纳任何其他指定的值。undefined值常用于表示还没有给一个变量赋值值表示一个变量已经被有意留下束而没有任何其他值。将变置初始化为不是undefined的某个值常常是一个好的习惯。因为可以使用户迅速地区分有意或无意留下来、没有其他值的变量所以当没有任何其他指定的值要赋予变量时将变量初始化为常常是一个好的习惯:varnQuantity:Number=可以在能使用一个变量所容纳的值的任何地方使用该变量o我们已经在trace()动作中看见了这样的一个例子。可以用一个变量来告诉Flash要输出什么消息:varsMessage:String=“Welcome!”trace(sMessage)还可以使用变量来执行其他种类的操作就像使用实际值那样。例如:varnQuantity:Number=varnPrice:Number=trace(nQuantity*nPrice)显示命名变量现在已经知道声明和定义变量了下一步要做的事情就是命名变量。这个问题要分成两个主要部分来讨论。第一要注意使用Flash理解的、有效的变量名字。因此我们要探讨命名变量的规则。第二我们将考察某些用于命名变量的其他指导方针Flash并不强求这样但它们将有助于刨建更可读的代码。为了让Flash能够理解变量必须遵守如下规则:·第一个字符必须是下划线()、美元符号($)或字母。第一个字符不能是数字。尽管可以用下划线和美元符号来作为第一个字符但在实际应用中通常应该用一个字母来开始一个变量名。·接下来的字符必须是下划线()、美元符号($)、字母或数字。·在变量名中不能有空格。·名字不能是关键宇或其他被Flash识别的特殊的值。例如MovieCliptrueStringundefined就是不被允许的变量名因为它们在ActionScript中已经有其他意义了。·名字必须是惟一的(在它的作用域中)。如果在同一个作用域(有关作用域的详细内容请参见第章和第章)中创建了两个名字相同的变量那么后面的一个就将覆盖前面的一个。接下来让我们介绍一些好的、可以用的命名习惯。第一因为希望在所有变量中都使用强化输入法所以要是有一个方便的方法来提醒一个变量可以保存什么类型的值的话就好了。一个名为Hungariannotation(匈牙利表示法)的系统已经被设计出来了它可以对此有所帮助。为了达到我们的目的将使用一个专门为ActionScript设计的匈牙利表示法的修正版本。使用这个系统可以用一个字符来作为每个变量的前缀(或者在某些情况下用几个字符)它有助于想起一个变量是什么数据类型。我们已经在本章前面的例子中看见这种方法了。当定义一个名为nQuantity的变量时该变量的名字就用字符n作为前缀。这就告诉我们该变量保存数字值。表列出了推荐的其他前缀。这个修正的匈牙利表示法习惯完全是可选的但它可能是很有用的。它不仅对开发者有帮助也对读代码的人有帮助。通过在变量名前面加适当的前缀使该变量能保存什么类型的数据变得一目了然了。在命名变量时尽量使其具有描述性也是重要的。例如变量名nQuantity就比nQ更具有描述性。当然所要求的描述性的程度取决于上下文。例如如果Flash应用涉及到Widget(装饰品)以及Cog(小船)的数量那么nOuantity就可能不是十分清晰了。在这种情况下将变量命名为nQuantityWidget和nQuantityCog就更好了。在某些情况下变量名越具有描述性就越好。可是请记住因为很可能要多次输入同一个变量名所以在可描述性和名字的长度之间做一个正确的权衡十分重要。如果合适的话可以在变量名中使用缩写。例如将一个变量取名为nQntyWidget,就比将其取名为nQuantityWidget更容易。请记住不能在变量名中使用空格。因此当想使变量名具有描述性时该名字常由几个词组成。在用多个词命名变量时有两个常用的习惯。这两个习惯中的第一个是使用下划线(一)来分隔变量名称中的词。这个方法的一个例子如下:varsFirstname:String=“Joey”这两个习惯中的第二个是被称为内部大写的方法。内部大写是指第一个字母之后的每一个词的第一个字母都大写不使用空格和下划线。这个方法的一个例子如下:varsFirstName:String=“Joey”使用这些习惯中的哪一种取决于开发者自己。选一种自己喜欢的如果后来又喜欢另一种了再换过来。在本书中我们趋向于使用内部大写的方法所以在一些例子中会看到这种偏爱但没有哪种习惯更正确或提供了优于另一种习惯的优势。记住ActionScript是区分大小写的也很重要。这就是说sFirstNamesFirstname和SfirstName等都是不同的变量。如果不小心输入了一个没有正确进行大小写的变量名字.其结果将是Flash不会认为该变量被定义了。这种例子如下:varsFirstName:String=“Joey”trace(sFirstName)显示Joeytrace(sfirstName)显示undefined使用表达式即便进行非常基本的算术运算(加、减等)也会使用表达式。简单地说表达式就是求出等于什么值的那些语句部分。下面是几个非常简单的例子:“abcd”nQuantity尽管这些例子都是些简单的值或变量但因为它们都求出一个单一的值所以都被认为是表达式。更复杂一点的表达式可能像下面的例子所示:“a”“b”nQuantity*nPrice表达式是ActionScript的一个重要部分。可以在各种情况下使用表达式。例如可以在trace()语句中使用一个表达式:trace(“Welcome!”)还可以在变量赋值语句中使用表达式:varnQuantity:Number=varnPrice:Number=varnTotal:Number=nQuantity*nPrice我们还会看到执行比较和测试的其他类型的表达式例如:<==在上面的例子中使用比较运算符对两个值进行比较o第一个表达式决定是否比小该表达式的结果是true。第二个表达式决定是否等于该表达式的结果是false。还育许多其他表达式的例子本章的后续部分将介绍其中的一部分。使用运算符正如所见表达式可以由一个单独的值组成。但是表达式还可以更复杂些即将几个不同的值组合起来形成一个表达式。在包含多个值的表达式中包含了两种ActionScript要素:操作数和运算符。操作数是对其实施操作的值。运算符决定实施的操作。例如在表达式“”中有两个值或操作数:和有一个运算符:加运算符()。在Actions工具箱中可以看见运算符被分成类:arithmetic(算术)、assignment(赋值)、bitwise(按位)、comparison(比较)、logical(逻辑)、miscellaneous(其他)。下面的章节将进一步探讨这些类和它们所包含的运算符。除了按位运算符之外我们将根据它们在Actions工具箱中的次序来探讨这些类并在探讨完其他运算符之后探讨按位运算符因为除了在一些特殊情况下更可能使用的是其他运算符而不是按位运算符。使用算术运算符用户应该熟悉算术运算符因为它们是math类中使用得最多的运算符。它们是算术运算中用于数字操作数的运算符。使用算术运算符的运算结果是一个数字值。表列出了所有的算术运算符。不需要对加、减、乘、除运算符做任何讨论了它们就像所预料的那样工作。对读者来说模运算符()可能有点新。就算它不新也最好钱柜娱乐手机登录一下它的作用。非常简单它返回第一个操作数被第二个操作数除之后的余数。在下面的例子中对nYear变量和第二个操作数使用模运算符结果是这表示被整除。用实际的术语说这个结果表示.年是闰年。varnYear:Number=trace(nYear)显示还值得一提的是减和负运算符使用相同的字符但操作不同。负运算符与将一个数乘以“”的效果一样。例如操作y=x与如下操作相同:Y=x*()使用赋值运算符表中列出了属于赋值运算符类别的有点令人生畏的运算符但不要被吓住了。实际上在这一串运算符中只有一个基本的运算符等于符号(=)。这个运算符不是一个新的运算符。它就像所预料的那样工作:它将右边的操作数的值赋予左边的操作数。剩下的运算符是复合赋值运算符它们的功能暂且不提但马上就会知道。在下面的例子中左边的操作数(nOuantity)被赋予了右边的操作数的值():nQuantity=当然用户可能想使用比简单的nQuantity=复杂一些的表达式。例如可能想在等于符号的右边将几个操作数加在一起如下所示:nQuantity=在这种情况下会注意到在赋值之前要做加运算。换句话说nQuantity被赋予了,的总和的值而不仅仅是这个值。这是因为加运算符()的优先级比赋值运算符()的优先级高。关于优先级的详细内容参见本章后面的“考虑运算符的优先级n一节。另外可以在Flash的Help(帮助)系统中查找到运算符及其优先级的完整列表。如前所述在赋值运算符类别中实际上只有一个基本的运算符等于符号(=)。其他的运算符只不过是为了节省输入时间而已。例如下面的表达式:nQuantity=就是下面的表达式的简写形式:nQuantity=nQuantity上面两个表达式都表示希望Flash将加到nQuantity的当前值上只是前一种形式更短、输入更快而已。与等于(=)运算符组合在一起的运算符只能是算术运算符或位运算符(在本章的后续章节中探讨)。在每种情况下组合运算符都采用相同的样式。例如:nQuantity*=与下面的表达式相同:nQuantity=nQuantity*使用比较运算符比较运算符允许对操作数进行比较比较的结果是一个布尔值:true(真)或false(假)。这些运算符最常使用在if…else块的、被称为“条件”的表达式中以及for和while块的“流程控制”表达式中。本章后面将介绍这些类型的语句。但是基本前提是如果条件表达式计算出的结果是true就执行一个代码块如果它计算出的结果是false就跳过该代码块。使用比较运算符(参见表)可以比较字符串、数字和布尔值。对于这些简单数据类型只要它们包含相同的值就是相等的。还可以比较引用数据类型如对象、函数和数组。但是这些引用数据类型只有在它们引用相同的对象(无论它们是否包含相同的值)时才相等。在编程中最普遍的错误也许就是混淆了相等等于运算符(==)和赋值等于运算符(=)。实际上老练的专家偶尔也会犯这个错误。差之毫厘失之千里。例如看看如下的例子:varnQuantity:Number=if(nQuantity=){trace(“ifconditiontrue”)}trace(nQuantity)希望这段代码做什么呢?即使你不知道这段代码的结构表示什么意思或许也可以领会到nQuantity命名之后被赋予了想让这段代码来检查nQuantity是否等于如果那个条件是true将在Output面板中写下一条消息。最后将nQuantity的值写到Output面板中o可能希望nQuantity最后的值还足。但因为在if条件(nQuantity=)中错误地使用了运算符所以nQuantity已经被赋予了!看到由一个错误的字符导致的问题了吗?因此修改后的代码如下:varnQuantity:Number=if(nQuantity==){trace(“ifconditiontrue”)}trace(nQuantity)任何数据类型都可以用等于运算符进行比较。字符串字符首先被转换成ASCII值然后一个字符一个字符地进行比较。因此“a”比“z”小小写字母比它们对应的大写字母有更大的值。表和表显示了数字比较和字符串比较的例子还包含了表达式的结果值。在这种类别的运算符中只有两个运算符还没有探讨过它们是严格等于(===)和严格不等于(!==)运算符。这些运算符除了有一点不同之外用起来就像不严格的对应物(==和!=)一样即它们不自动进行数据类型的转换。这就是说当使用普通的相等等于运算符(==)时Flash在测试是否相等之前自动将操作数转换成相同的数据类型。因此当使用普通的等于运算符(==)时值和一甲是相等的但当使用严格等于运算符(===)时值和竹是不相等的。表给出了使用普通运算符和严格运算符的区别的一些例子

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续钱柜777手机版登陆或者下载,敬请购买!

评分:

/25

¥20.0

立即购买

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料

博聚网