编程基础讲解
1,所谓编程就是向电脑发号施令,用一段,或者几段命令让电脑做你想让它做的事情.
2,所谓对象就是你想让它做事情的对象,就像你要张三去买烟,张三就是对象,你要李四去买酒,李四就是对象.在flash中可以是mc,按钮,什么的.
3,所谓属性,就是特性,性质.比如张三买回的烟是三五的,十颗包装的.三五牌,十颗就是烟的属性.买的酒是二锅头.二锅头牌就是属性.像质量,重量这些都是属性,在flash里,属性有很多比如透明度,旋转角度,x,y坐标值等等.
4,所谓方法,就是可以做的事情,比如张三是款姐,娶她可以买车买房子等娶她,买车,买房子就是方法.李四是瘸子,你要他去赛跑,这个是不可能的事,就不是方法了.可以做的事才事方法!
5,所谓实例,对象的实例就是对象的复制品,对象所有的属性,方法等等.所有的实例都具有原型对象的所有属性和方法,也可以使用对象的方法等等.好比张三他儿子就能和张三一样娶媳妇成家工作.老鼠的儿子能和它爸爸一样偷东西,磨牙等等.
6,所谓函数.就使将命令组织起来,使它们能完成某种功能,并为这组命令集合起个名字,以后再用这个功能时,就直接用一条命令来告诉这个集合就ok了,这样的命令集合就时函数.
7,所谓语法,在编程时对象或实例与它的属性,方法之间是用"."来连接的.
二,现在来讲一下函数.
函数分为"预定义函数"和"自定义函数".
"预定义函数"顾名思义是flash内部已经定义好的函数,是固定的咱不能改,我们只要直接使用
就可以了,这后面再讲.
"自定义函数"顾名思义是我们自己定义的函数,咱自己想怎么改就怎么改.具有很大的灵活
性.它和"预定义函数"相比较,就像老子的名字和儿子的名字一样.老子的名字在咱未出生时
就已经定义好了,是老子的老子定义的.咱改不了.(这里比作as的开发者),等咱结婚生儿子了,
咱儿子的名字得咱来取,想叫他二胖子就叫二胖子,想叫他狗曾狗就叫狗曾狗.(比作用户自定
义函数).
自定义函数的定义要用到关键字"function",(可以想象成咱找了个叫function的算命先生来
给咱儿子测八字)其语法为:
function name (参数1,参数2......)
其中name就是函数名,将来要唯一标识该函数,每一个函数在同一个影片剪辑里名称必须是
唯一的(就是给咱儿子取的名字,将来伴随儿子一生,如果咱生了一儿一女,不能给她们取一个
名字啊,那样咱就没法叫她们了).
参数是要传递给函数的变量,比如goAndPlay(参数1),参数1就是变量,当你给它赋值后,它是
要传递给函数,然后执行函数的命令,比如跳转到第20帧,goAndPlay(20),20就是变量.
函数也可以带有返回值,也可以没有,所谓的返回值,就是函数执行后,将改变了的变量值再传
递出来,以供别的函数使用,如果要使用返回值,必须先确定一点,就是传递的变量必须是全局
变量,这里就涉及了三个概念:全局变量,时间轴变量和局部变量.等下就讲变量的声明.先讲
返回值的语法:
return 变量名(或表达式);在定义一个函数时加上这个语句就可以传递变量的值了.
变量声明
局部变量 是在它们自己的代码块(由大括号界定)中可用的变量。
时间轴变量 是可以用于任何时间轴的变量,条件是使用目标路径。
全局变量 是可以用于任何时间轴的变量(即使不使用目标路径)。
要声明时间轴变量,可以使用 set variable 动作或赋值 (=) 运算符。这两种方易做图产生同
样的结果。
要声明全局变量,可以在该变量名前面使用 _global 标识符。下面的示例会创建全局变量 myName:
_global.myName = "0312";
要声明局部变量,可以在函数体内部使用 var 语句。本地变量的使用范围只限于它的代码
块,它会在该代码块结束时到期。没有在代码块中声明的本地变量会在它的脚本结束时到
期。
局部变量也可防止出现名称冲突,名称冲突会导致影片出现错误。例如,如果使用 name
作为局部变量,可以用它在一个环境中存储用户名,而在其它环境中存储影片剪辑实例;
因为这些变量是在不同的范围中运行的,它们不会有冲突。
在函数体中使用局部变量是一个很好的习惯,这样该函数可以充当独立的代码。局部变量
只有在它自己的代码块中是可更改的。如果函数中的表达式使用全局变量,则在该函数以
外也可以更改它的值,这样也更改了该函数
这些是基础一定要牢记,变量的概念.如果用比喻来说的话,全局变量好比是瓶装酒,局部变量
好比散装酒.瓶装酒全国各地都能卖因为它是正宗厂家出的品牌酒,,比如在38RMB,38块这就
是变量值.但是俺嫌贵,俺就说37块5卖不?人家说俺算算还能赚你2毛,卖你了!这样瓶装酒还
是瓶装酒,但是价钱变了,因为它是变量它的值是可以改变的.
散装酒就不一样了,它是俺自己个家酿的,只能在俺们村卖,出了俺们村人家全当马尿倒了.比
如俺姐夫要买俺的酒,俺得给他便宜点,不然回头去姐姐家不给做饭吃了,这样散装酒的价钱
也改变了,局部变量的值也改变了,变量的值是可以改变的!
编程一通百通,道理是一样的,不同的是语法和书写规则而已.今天说一下编程的三种基本结构.顺序结构,选择结构,循环结构.如果你能弄明白这三种结构的话,不只是as,包括c,vb,java,c++,c#,asp,等等流行编程语言你都可以越过基础,只是学习他们的语法和算法以及大量的库函数就可以了。节省大量的时间。
1,顺序结构语句.
顺序语句就是指依顺序逐条执行的语句,只有在上一条语句执行完后,才能执行下一条语句.如以下语句:
a=12;
b=13;
c=a;
a=b;
b=c;
这个程序是将a,b的值互换.程序从第一条语句开始执行,直到最后一条语句.
顺序语句比较简单,就是从上上到下依次执行而已.
2,选择结构语句.
选择语句先测试条件表达式,然后根据测试表达式的结果执行不同的操作.选择结构最常用if语句来实现,if语句最常用的形式是:
if(关系表达式)语句1 else 语句2
if语句是用来判断所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一.if语句有三种形式:
1,if(表达式) 语句意思是如果表达式的值为真,就执行语句.否则什么也不做.见图(a)
2,if(表达式) 语句1 else 语句2 意思是如果表达式的值为真,就执行语句1,如果为假就执行语句2.见图(b)
3,if(表达式1) 语句1
else if (表达式2) 语句2
else if (表达式3) 语句3
:
:
:
else if (表达式n) 语句n
else 语句 m //这个就是比较复杂的了,但是相信大家应该看的懂,意思是如果表达式1的值为真的话(这是一个分支),就执行语句1,如果表达式1的值为假的话(这是一个分支)就执行if(表达式2) 语句2,就是说如果值为假的话再在这个假的分支里使用选择语句,再划分选择的条件.其实就是很多个if else语句嘛! 图(c)
上例中我们把else写在与第一个if(外层的if)写在同一列上,希望else与第一个if配对,但实际上else是和第二个if配对的,因为它们距离最近.因此最好使用内嵌if语句也包含else部分,即使它什么也不做.这样的if和else的数目相同,从内层到外层都一一对应,不至于出错,如果if和else的数目不一样,为了实现程序设计者的企图,可以加花括号{}来确定配对关系.
if ( )
{ if ( ) 语句1}
else
{ if ( ) 语句2
else 语句3 }
现在让我们举例来说明选择语句。先讲if..else。
昨天晚上俺和俺老婆在床上就商量,我俩掰腕子,我赢了我老婆亲我一下,我老婆赢
了,我亲我老婆一下。这个就是选择语句,
如果(if)我赢了(表达式)我老婆亲我一下(语句1),如果我输了(else),我亲我老婆一下(语句2)。大家明白了不?
今天去逛街,看见个要饭的跟俺要钱,如果我有钱,我可以做2个选择,1,我心情好,
给他5毛,2,心情不好打麻将输了500,就还这么一点还要买菜去呢,不给!如果我没
钱,我也可以做两个选择,1,我是好人,帮不了他就赶紧走吧。2,我是恶人,我跟他
要钱,他手里一把毛票呢!比我还富!这个在编程里就是if的嵌套。我们来看一下再程序
里应该是怎么样的实现的:
如果 (if)我有钱(表达式1) {
如果(if )我心情好(表达式2)给他5毛(语句1);
我心情不好(else) 不给(语句2);}
我没钱(else)如果(if)我是好人(表达式2){走人(语句3);
我不是好人(else) 抢它的钱!(语句4);}
这个就是if语句的嵌套,大家这会明白了不?
[B][原创]编程基础讲解(三:switch的应用) [/B]
除了if.....else语句外还有switch语句也是可以拿来实现选择的.switch语句是多分支选择语句.if语句只有2个分支可以选择,实际上我们常常需要用到多分支的选择.例如学生的成绩有90以上为A,80以上为B,70以上为C等等.当然如果用嵌套if语句也是可以实现的,但是相对来说就太麻烦了.if语句的嵌套层数多,程序冗长而且读起来很难理解.
as提供了switch语句来解决这一难题.一般形式如下:
switch(表达式)
{ case 常量表达式1:语句1;
case 常量表达式2:语句2;
case 常量表达式n:语句n;
default: 语句n+1;
}
说明一下:1) switch后面的表达式,允许为任何类型(整型,字符串等等)
2) 当表达式的值和后面花括号里某一个case后面的常量表达式的值相等时,就执行case后面的语句,若所有case后面的常量表达式的值都没有和switch后的表达式的值相匹配,就执行default后面的语句.
3) 每一个case后面的常量表达式的值必须互不相同,否则就会出现自相矛盾的现象(对表达式的同一个值,有两种或多种执行方案).
4) 各个case和default的出现次序不影响执行结果.例如可先出现default再出现case
5) 执行完一个case分支后,流程控制转移到下一个case继续执行,case常量表达式只是起语句标号的作用,并不是在该处进行条件判断,在执行switch语句时,根据switch后面的表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断.
因此应该在执行完一个case分支后,使流程跳出,switch结构,即中止switch语句的执行.可以用break语句来达到此目的.如下:
switch(表达式)
{ case 常量表达式1: 语句1; break;
case 常量表达式2: 语句2; break;
case 常量表达式n: 语句n; break;
default: 语句n+1;
}
最后一个流程default不可以+break语句.
在case后面虽然包含一个以上的执行语句,但可以不必用花括号括起来,会自动顺序执行笨case后的所有语句,当然加上花括号更好了.
6) 多个case可以共用一组执行程序:
:
:
case ’A’ :
case ’B’ :
case ’C’ : Stop();
:
switch后面的表达式的值为ABC时都执行Stop语句.
先讲这些要去上课了,等上完课再来详细解释这些.大家先看看能否理解.
现在用实例来说明switch语句,下面这个程序是显示今天是星期几.
新建一文件,写一动态文本,并命名day.
新建一层,在帧上添加如下语句:
mydate = new Date(); //创建一个新的日期对象.
a = mydate.getDay(); //获取本地日期是星期几.并赋值给变量a
switch (a) {
case 0 : //a值为0的话,执行语句day="星期天",执行后跳出switch
day = "星期天"; 结构.
break;
case 1 : //道理相同!
day = "星期一";
break;
case 2 :
day = "星期二";
break;
case 3 :
day = "星期三";
break;
case 4 :
day = "星期四";
break;
case 5 :
day = "星期五";
break;
case 6 :
day = "星期六";
break;
}测试一下看看!
测试时,动态文本显示为星期一,date.getday()函数是按照本地时间返回指定 Date 对象中表示周几的值(0 代表星期日,1 代表星期一,依此类推)。
这就是switch语句的应用.大家是否明白了呢?
[B][原创]编程基础讲解(四:循环语句) [/B]
循环结构的目的就是减少重复代码,减轻程序员的负担。而其形式,有三种:for 循环、while 循环和 do-while 循环。
讲到这里还要讲一下goto语句.
在as中,goto语句已经转化的十分简单和可视化.而在程序员用高级语言编程时,是十分抽象的.goto语句在as中分为gotoAndPlay和gotoAndStop.后面的参数为帧标签或帧数.这里我们讲的是编程,而不是单指as故我再讲一下vc和vb中goto的使用.(不喜欢这些的朋友可以跳过)
在c语言中,为无条件专向语句,一般形式为:
goto 语句标号;
语句标号用标识符表示,它的定名规则与变量名相同,即由字母,数字,下划线组成,第一个字符必须为字母或下划线.不能用整数来做标号.
在visual basic(vb)中将goto语句划分为第四种结构即转向结构.语法格式为:goto{行号/行标签}
行标签开头字母必须是英文字母,后以:结尾.行号为数字后面不带:
无论c语言还是vb语言goto语句的作用是一样的,就是程序运行时,一旦遇到Goto语句,就转移到行号或行标签,语句标号处执行相应程序.
请注意:结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律,可读性很差.但也不使绝对禁止使用goto语句,一般来说有2种用途:
1)和if语句构成循环结构.
2)从循环体中跳转到循环体外.但在c语言中可以使用break语句和continue语句跳出本层循环和结束本层循环,goto语句的使用大大减少,只是在从多层循环的内层循环跳到外层循环外时才使用goto语句.但是这种用法不符合结构化原则,一般不宜使用,只有在不得已时或大大提高程序效率时才使用.
介绍如下:
for 循环的基本格式是
for(表达式1;表达式2;表达式3) {语句组}
大括号包括其中的语句组也可以是一条语句。
其执行过程如下:
1)先求解表达式1.
2)求解表达式2,若其值为真(值非0),则执行for语句中指定的内嵌语句(语句组),然后再执行下面第3)步.若值为假(值为0),则结束循环,转到第5)步.
3)求解表达式3
4)转回第2步继续执行(一次循环咯)
5)循环结束,执行for语句的下面的语句.
for语句最简单的应用形式(理解形式)如下:
for (循环变量赋初值; 循环条件;循环变量增值) 语句 见图a!
解释:
我身上有100块钱,我烟瘾大,每天都得抽一盒,于是每天都叫小M去买一盒大红河,5块.可是等我钱花光的时候我就不能叫小m去买烟了,没钱人家不卖啊.只好抽自己家种的烟叶.于是一个循环结构就开始了.
for(我身上有100块,"表达式1",有钱才能买啊所以我身上的钱得多于5块才能买烟,"表达式2",每买一次烟我身上的钱就要少5块,"表达式3"){
叫小M去买烟,"语句".}
没钱了,只好抽烟叶"for语句后面的语句"
顺序是这样的:
1) 我身上的钱 = 100块;
2) 100块 > 5块,所以我能买到一盒大红河.
3) 执行语句"叫小M去买烟"
4) 买一次烟后我身上的钱少了5块. 我身上的钱 = 我身上的钱(100) - 5块"表达式3" (还剩95呐)
5) 95块 > 5块,所以我还能买到一盒大红河. 执行语句"叫小M去买烟".买完烟后我身上就还剩90块啊,还是比5块多,还是能买烟.直到我第20次叫小m去买烟,买完烟,我身上的钱就没了啊,剩下0块.不够了啊,怎么买烟啊,循环条件为假了!不能执行语句"叫小M去买烟"了.于是执行for语句后面的语句"抽自己家种的烟叶子".
大家是否明白了呢?
for循环比较常用,选择再来介绍另一个循环while语句.while语句用来实现"当"型循环结构.一般形式如下:
while (表达式) 语句
当型,就是当表达式的值为真(非0)时,执行while语句种的内嵌语句.流程图见图b .
注意:
1)循环体如果包含一个以上语句,应该用花括号括起来,以复合语句形式出现,就是语句组.如果不加花括号,则while语句的范围只到while语句后面第一个分号处.作为一名程序员,应当有良好的编程风格,不要想到哪写到哪,要使程序看起来整齐有序,一目了然.因此建议不管有几条语句,最好使用花括号,养成良好的编程风格.
2)在循环体中应该有使循环趋向结束的语句,避免出现死循环.
那么什么叫使循环趋向结束的语句呢,就是使表达式的值逐渐为假的语句.只有表达式的值为假了循环才会结束.!
明白了while语句再说do while就简单些了.
do while的特点是先执行循环体,然后再判断循环条件是否成立.一般形式为:
do
循环体语句
while (表达式);
它是这样执行的,先执行一次指定的循环体语句,然后判断表达式,如果表达式值为真的话,返回重新执行循环体语句.如此反复直到循环条件表达式的值为假,此时循环结束. 见图c!
一般情况下,用while语句和用do while语句处理同一问题时,若二者的循环体部分是一样的话,那结果也一样.但是,如果while后面的表达式一开始就为假的话,那么结果可就不一样了.
while语句因为表达式的值为假,所以不执行循环体语句就直接去执行while后面的语句了.而do while首先执行的是循环体语句,再判断表达式的值是否为0,这样的话就是说:"无论表达式的值是真是假,do while语句都要执行一次循环体语句."这点是do while 语句和其他循环语句不一样的地方,大家一定要牢记,需要这种情况时,大家应该首先想起,do while!
选择来讲讲循环的嵌套.和if的嵌套一样.一个循环体内又可以包含另一个完整的循环结构,称为循环的嵌套.内嵌的循环中还可以嵌套循环,这样就是多层循环.各种语言中关于嵌套的概念都是一样的!三种循环(for ,while ,do while )还可以互相嵌套.只要你能明白这个逻辑关系,嵌套n个都可以.例如下面的例子都是符合标准的.:
1) while ( ) {
:
while( ){ :}
}
2) do {
:
do { .... }
}
3) for ( ; ; ) {
:
for ( ; ; ) { : }
}
4) while( ) {
do { .....}
while ( );
}
不多举了........
还是写完循环结构吧,也不多了.
几种循环的比较
1,三种循环都可以用来处理同一问题,一般情况下它们可以互相代替.记得不提倡goto
2,while和Do while循环,旨在while后面指定的循环条件,在循环体中应该包含使循环趋向结束的语句(如递增递减,i++,i--).
for循环可以在表达式3中包含使循环趋向结束的操作,甚至可以将循环体中的操作全部放到表达式3中,因此for语句的功能更强,凡是用while循环能完成的,用for循环都可以实现.
3)用while和do while 循环时,循环变量初始化的操作应该在while和do while 之前完成,而for语句可以在表达式1中实现,变量的初始化,就是声明变量.赋值等等.
4)while do while for循环可以用break语句跳出循环,用continue语句结束本次循环.而对用if和goto语句构成的循环不能用break和continue语句.
break语句和continue语句
1,break
还记得第二部分的选择语句中的switch语句嘛?
switch语句中我们已经使用了break语句跳出switch结构.继续执行下一个语句,实际上break还可以从循环体内跳出循环体,提前结束循环.用法和switch中一样:::::break;
for ( i=1; <10; i++)
{
a= pi * i * i; pi是圆周率的值.
if (a>100) break;
}
2,continue
一般形式:continue;
其作用是:结束本次循环,即跳过循环体下面尚未执行的语句,接着进行下一次是否执行循环的判断,(就是执行到continue时,立即结束本次循环,重新去判断循环条件是否为真)
break和continue的区别是:
continue值结束本次循环,而不是中止整个循环的执行.而break语句则是结束整个循环过程,不再判断循环条件是否成立.
[B][原创]编程基础讲解(五:对象)[/B]
在面向对象的程序设计中,我们将通过分组组织起来的信息成为类.可以创建一个类的多个实例,呗称为对象.
你可以创建自己的类(自定义对象),也可以使用内置的动作脚本类(预定义对象);内置类位于“动作”面板的“对象”文件夹中。
当自定义类时,要定义它创建的每个对象的所有属性(特性)和方法(行为),就如同定义生活的对象一样。例如,可以说一个人有性别、身高和发色等属性,以及交谈、行走和投掷等方法。“人”就是一个类,并且每个人都是一个对象或该类的一个实例。"张三是个一米八的大小伙子."有性别,身高等属性,以及说话等方法。在此例中,“张三”就是一个对象.再比如:我们定义了"说话娘娘腔的人"这个类,"张三说话娘娘腔",张三就是"说话娘娘腔的人"这个类的一个实例
动作脚本中的对象可以是纯的数据容器,或者它们可以在舞台上以图形化方式表示为影片剪辑、按钮或文本字段。所有影片剪辑都是内置类 MovieClip 的实例,所有按钮都是内置类 Button 的实例。每个影片剪辑实例都包含 MovieClip 类的所有属性(例如,_height、_rotation、_totalframes)和所有方法(例如,gotoAndPlay、loadMovie、startDrag)。这下你该明白了吧? 不过这些都是内置对象,预定义对象,事先定好的.
要定义类,您可以创建一个名为构造函数 的特殊函数。(内置类具有内置的构造函数。)可以像预定义对象那样产生自己的实例,在定义对象时,同样可以为自己定义的对象定义属性方法等等.定义对象实际上就是为所定义的对象构建一个函数,这样的函数就叫做"构建函数".对象有什么属性有什么方法都可以在函数里说明.在定义完成后就可以在以后的程序里创建自己定义的对象的实例,以后方便使用.
构建函数的名字通常和这个对象的名字一样,
语法:
function 函数名(参数) {
this.参数=?
:
:
}其中函数名也就是对象名.参数可以理解称属性,当构建了一个对象后,flash会自动产生关键字"this"来代表这个对象,所以"this.参数=?"就是这个[color=#D从143C]对象的参数属性被定义为后面的"?"所表示的动作或值.".. .."为省略号,表示还可以定义更多
例如,如果需要关于您的影片中某个自行车骑手的信息,您可以创建一个构造器函数 "骑自行车",它具有属性" 时间" 和 "路程",以及能够告诉您自行车行进速度的方法"速度":
function 骑自行车[函数,对象名] (分钟,公里[参数]) {
this.时间 = 分钟[值或动作]
this.路程 = 公里;
this.速度 = function() {return this.路程/ this.时间;};[这个是一个自定义函数,函数的运行结果是返回路程/时间的值]
}
补充:flash教程,动画技术