TKCB 发表于 2018-2-7 16:34:32

【AS3新手教程】——第5章 不改变的常量

本帖最后由 TKCB 于 2018-11-26 13:37 编辑

第5章 不改变的常量
其实我总觉得从变量、常量、流程控制、函数等等这些开始讲太过传统了。但后来多次想了还是觉得应该这样讲,为什么呢?因为如果你想好好学AS3那就应该从基础学起,不然只会浪费更多时间,反而学AS3语言的架构不清不楚的。当然我也尽我的全力去将这些基础概念讲的浅显易懂,当然这也需要你们认真阅读和反复练习。强烈建议大家,先把变量反复练习懂了,再来阅读此章节!(古人云:欲速则不达)
下载:本章的Flash练习文件
一、从变量到常量(小量故事续集)自从“小量”升级了钥匙命名方式,效率提高了很多,名气渐渐越来越大。不少公司都要把自己的库房交给小量来管理,小量因此掌控了更多的库房,问题也随之而来了。英美公司有26个字母在库房存着,很多和英美公司合作的公司都需要这26个字母使用在产品中,总是要从英美公司获得授权后,自己再在自己的库房中存放一套一模一样的26个字母。小量掌握的库房中就这26个字母的库房都有好多个重复的,他觉得完全可以和英美公司商量,以后不需要其他26个字母的库房了,只需要一个库房存放26个字母,用的时候都从这一个库房中获取,说干就干,于是他成功说服了英美公司。当然不只是26个字母,还有拥有“π=3.1415……”的祖冲之公司,还有拥有“SQRT2=1.414……”的毕达哥拉斯学派公司等等。这些公司都有一个特点,他们的东西大家都需要,但是总是相同的东西存放多个库房浪费资源。于是小量再次对命名方法进行改进,他觉得“变量”是可以改变的钥匙,那不如在创立一个“常量”,表示长久不变(甚至永恒不变)的库房的钥匙。于是乎,小量的功绩再次载入了历史,常量发明了。

二、程序中的常量是什么?我们回想一下变量是什么,变量是操作数据的钥匙,变量持有的值(数据)可以随时改变。那常量其实就是在变量的基础上的再次升级,常量和变量都是一样的,只有一点不一样。常量必须创造时候就赋值,之后再也无法改变,只能使用它,不能改变它。

三、常量的声明和使用因为常量和变量就是亲兄弟,所以不多做解释,直接看代码吧。// 通俗翻译:我们拿了一把永远不变的钥匙,将它命名为“PI”,给它的房间装了3.141592653589793 π的值,钥匙的类型是“数字类型”
// 专业翻译:我们声明了一个常量,将它命名为“PI”,给它的赋值为3.141592653589793 π的值,常的数据类型是“浮点数类型”
const PI : Number = 3.141592653589793;
注意的是,声明常量的关键字是“const”而不是“var”。
是不是变量和常量很熟悉呢,其实你可以简单理解为,常量就是定义之后不需要改变(也不能改变)的变量而已。
1. 声明变量的语法和变量一样,常量也是需要先声明(创造),然后才可以使用这个常量。在ActionScript中声明常量的格式如下:const 常量名称 : 数据类型 = 值;“const”是一个关键字用来声明常量(关键字是代码中固定的语法格式,必须遵守),然后跟着一个空格(用来区分常量名和关键字),之后跟着“:”英文冒号(代码语法格式中都使用英文标点符号),再就是数据类型。最后就给常量赋值(常量必须定义的时候就赋值),在数据类型之后跟着“=”等于号,最后写上值还有“;”分号。
*专业知识1:在“:”冒号和“=”等于号两边都是可以加一些空格等用来让代码更优美(也就是让代码不那么挤在一起,不方便查看),注意“const”和常量名之后这个空格是必须的。
*专业知识2:在ActionScript中一行代码的末尾应该加上“;”分号,表示这行代码结束了,也可以不加,但这不是好习惯(从这里可以看出,代码是一行一行的)。
*专业知识3:常量因为在声明(定义)时候必须赋值,所以它即使没有写数据类型,其实数据类型依旧是值对应的数据类型(值为数字则是数字类型,值为文字则为文字类型)。
*专业知识4:常量的数量并不多,但是通常是一些重要的不变的数据,比如π的值等,所以业内对于常量名称的写法是纯大写字母形式(后面具体说明)。
下面我们看一些错误和正确的常量声明的方式吧!//// 错误的例子
// 没有使用const关键字,说明没有声明常量,错误
A;

// 没有使用const关键字,同上,错误
B=4;

// const关键字和常量名之间没有空格,代码无法识别,错误
constC=10;

// 变量的数据类型是String(文字)类型,但是赋值时候却是数字类型的值,错误
const D:String=20;

// 下面这样的写法在语法上完全没有问题,使用也不会有任何问题,但是如果在大公司一定是不允许的,因为业界标准的做法是,常量名称都是大写字母
const pi : Number = 3.141592653589793;


////正确的例子
// 声明了一个“EFG”名字的常量,数据类型为Number(浮点数),值为“10.01”
var EFG:Number=10.01;

// 声明了一个“H”名字的常量,数据类型为int(整数),值为“-20”
var H:int = -20;

// 声明了一个“I”名字的常量,数据类型为uint(正整数),值为“100”
var I : uint = 100;

// 声明了一个“J”名字的常量,数据类型为String(文字),值为“www .tkcb.cc”
// 注意的是,不同的数据类型赋值的写法稍有不同,String就需要使用""或者''将值包裹起来
var J : String = "www.tkcb.cc";
试着自己打开Flash软件,声明一些常量试试,然后发布测试SWF,如果不幸你的Flash弹出如下类似的提示“编辑器错误”,那就说明你的常量声明是错误的,在重新阅读上面的教程吧。
2. 常量与变量命名的差异常量的使用没有什么好说的,和变量一样,就是声明(定义)时候必须赋值,并且之后只能使用变量,无法改变变量的值。我们说说变量和常量在命名上面的差异吧。变量名如果由一个英文单词组成,则使用纯小写;如果有两个或多个英语单词组成,则第一个单词小写,后面的单词首字母大写。之前也说过这种方式称之为小骆驼峰命名法。而常量的命名简单一些,就是前面强调的必须所有字母大写,如果有多个单词,则以“_”下划线分隔,比如:MY_NAME、I_LOVE_YOU、TKCB等等。常量的命名方式称之为长城命名法。每一个下划线的地方都是用来射箭杀敌的。
3. 优先常量还是优先变量?记得最开始学习程序的时候,书上说是写代码的时候应该优先使用常量而不是变量。但我的代码实践证明,其实一般我会默认为使用变量,因为常量不够灵活。当然写一些特定类型的数据的时候,我也会直接使用常量,因为在程序中有些数据必然用常量进行定义,因为这会牵扯到代码规范。所以其实大家只要记住变量还有一个弟弟叫做常量就行了,平常只需要使用变量即可,当编程越来越多了,你自然会知道那里用常量,那里会变量了。

四、本章练习学习不仅是“看”,更多是要“练”!大家可以把自己的练习结果以代码、文件、截图等等任意形式回帖发布上来,相互学习。
1. 大圆、三角、面积问题有一个圆形直径为10,圆内有一个三角形长和高都是3。请问圆形的面积是多少?三角形的面积是多少?圆形减去三角形之后的面积是多少? 提示:大家试着用变量、常量,trace(),以及最简单的加减乘除运算,用代码的形式一步步算出问题的结果吧!请至少使用一个常量(要认真思考使用常量是否合适)。没有固定代码格式,参考前面章节的练习方式,一步步用trace()显示出变量的值的变化,最终求出答案。

五、总结首先我们通过“小量的故事续集”引导大家对常量有一些认知,由于变量和常量几乎一样,所以我们快速讲解了程序中常量是什么,然后又给大家说了常量在程序中的实现(声明和使用),以及命名的规范。本章练习希望大家认真完成,并发回帖,这样有助于自己记忆深刻。

TKCB问答编辑:能不能用一句话总结下常量是什么?TKCB:常量和变量一模一样,只不过常量定义赋值后无法改变而已。(记住常量这个概念,因为后续用到的不会太多,用到时候自然会记住了)

TKCB 发表于 2018-2-7 16:34:45

1. 大家可以如果觉得哪里写的不够好(或者一些建议),可以随时提出,帖子的方便之处,就是可以随时更新!!!!
2. 如果有大家有什么讨论的,或者不懂得,可以留言进行交流。


返回总贴:【AS3新手教程】——Animate & Flash Action Script 3.0 编程教程

雪原xy 发表于 2018-11-22 22:07:55

长城命名法,每个下划线都是射箭的地方!有点意思!

雪原xy 发表于 2018-11-23 14:20:00

本帖最后由 雪原xy 于 2018-11-23 14:22 编辑

var circleArea:Number;
var triangleArea:Number;
var remainingArea:Number;
var d:Number = 10;
const PAI:Number = 3.1415926;
var a:int = 3;
var h:int = 3;
circleArea = PAI * (d / 2) * (d / 2);
triangleArea = 1 / 2 * a * h;
remainingArea = circleArea - triangleArea;
trace("圆的面积为"+circleArea);
trace("三角形的面积为"+triangleArea);
trace("剩下的面积为"+remainingAre);
这也算是完成一项作业吧,希望能得到T老师的好评,进精华贴!为了银子!
里面的英文全是网上百度的,也不知道可合适!也算是响应T老师的号召!
望各位大神点评!!!
谢谢各位了

TKCB 发表于 2018-11-23 15:17:41

雪原xy 发表于 2018-11-23 14:20
var circleArea:Number;
var triangleArea:Number;
var remainingArea:Number;


精华哪有那么容易,而且精华是要发布帖子,而不是回复帖子。。
你看帖子那么多,精华也没几个。。。#:)
要想精华,还得努力学习~~{:6_199:}

雪原xy 发表于 2018-11-23 21:41:08

TKCB 发表于 2018-11-23 15:17
精华哪有那么容易,而且精华是要发布帖子,而不是回复帖子。。
你看帖子那么多,精华也没几个。。。
...

努力中……
页: [1]
查看完整版本: 【AS3新手教程】——第5章 不改变的常量

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)