Flash ActionScript 3 殿堂之路学习笔记

本文档详细介绍了ActionScript 3的基础知识,包括数据类型、变量、运算符、流程控制、函数及面向对象编程。重点讲解了ActionScript 3中的类结构、对象创建、访问控制、函数参数、静态与实例属性、方法以及显示对象的使用,如Shape、Bitmap、MovieClip等。此外,还涵盖了容器类DisplayObjectContainer、Sprite和MovieClip的使用,以及加载外部资源和碰撞检测等内容。通过对ActionScript 3的深入理解,读者能够掌握创建动态Flash应用程序的基本技能。
摘要由CSDN通过智能技术生成

┏━━━━━━━━━━━━━━━━━━┓
┃ 第一部分:ActionScript 3 语言基础 ┃
┗━━━━━━━━━━━━━━━━━━┛
================================================
第2章 ActionScript 3 语言基本元素
================================================
2.1.2 数据类型概述
简单数据类型
Boolean(布尔)、int(有符整型)、Number(浮点)、String(字符串)、uint(无符整型)
复杂数据类型
Array(数组)、Date(日期)、Error(异常)、Function(函数)、RegExp(正则表达)、XML、XMLList

2.2.1 变量声明
var 变量:类型
var 变量:类型 = 值;

2.3 声明常量
const 常量名:类型 = 值;

2.4 基础数据类型
1.布尔值 Boolean(初始化为false)
2.数字:int uint Number
int  有符号32位整数 -2(31次方) -  +(2(31次方)-1)
uint 无符号32位整数 0 -  2(32次方)-1
Number 64位浮点

能用整数优先用int uint,有正负之分,用int。只处理整数,用uint,有小数,用Number。

2.4.6 Object及关联数组
var 对象:Object = new Object()
var 对象:Object = {};

2.4.8
Null、NaN、undefined及各自应用对象:变量的默认值
数据类型    默认值
int        0
uint        0
Number        NaN
String        null
Boolean        false
Array        null
Object        null
没声明        undefined
*        undefined

注意:必须声明初值,否则容易出错。

2.5 运算符,表达式及运用

2.5.11 typeof、is、as
typeof,用字符串返回对象类型,格式: typeof(对象)
is    ,判断操作符左边的对象是否属于右边的类型,返回值为Boolean,格式:  对象 is 数据类型
as    ,判断操作符左边的对象是否属于右边的类型,属于则返回数据,不属于则返回null,格式: 对象 as 数据类型

typeof对象类型与返回结果对照表
对象类型        返回结果
Array            object
Boolean            boolean
Function        function
int            number
Number            number
Object            object
String            string
uint            number
XML            xml
XMLList            xml

2.5.12 in
in    ,判断操作符左边的对象是否作为右边对象中的键(Key)或索引,返回值为Boolean
比如:
var a:Array = ["q","w","e"];
trace(2 in a);  //数组中有索引2,返回true
trace(3 in a);  //数组中没有索引3,返回false

2.5.13 delete关键字
AS2.0中可以删除任意任意对象的delete关键字,在AS3.0中只能用于删除对象的动态实例属性,非动态属性不能删除。

如果要将一个对象删除,使用 对象名 = null 来进行赋值操作即可。

================================================
第3章 ActionScript 3 流程控制
================================================
3.4.5 for...in和for each...in
for(var 枚举变量 in 枚举集合)  //枚举变量返回为集合元素键名
for each(var 枚举变量 in 枚举集合)  //枚举变量返回为集合元素值

3.4.7 break和continue标签的特殊用法
在循环语句前用  标签:  的形式为循环体赋标签,然后就可以在break和continue语句后 加上空格+这个标签,实现控制对应循环的功能。

3.5 AS3.0中switch比较默认使用 === 全等比较,switch条件不会自动执行类型转换,要注意。

================================================
第4章 ActionScript 3 中的函数及高级使用技巧
================================================
4.1.1 两种定义函数的方法
函数定义式    -     函数变量式
函数语句定义法    -    函数表达式定义法
函数定义式 用function开头,function 函数名(){}
函数变量式 用 var 变量名 = function(){} ,即匿名函数

AS编译器会优先执行定义式的函数,而变量式函数则只能先定义,后使用(与变量一样,先定义,后使用)

变量式中this关键字绑定对象 定义式中this关键字只绑定场景
var num:int = 3;
function testThisA(){
    trace(this.num)
    //此处输出3
}
var testThisB:Function = function(){
    trace(this.num)
    //此处输出300
}

var Obj:Object = {num:300};
Obj.TestA = testThisA
Obj.TestB = testThisB

4.2 参数
4.2.1 按引用传入参数
AS3.0中,所有形参均为引用传入方式,只不过,基元数据是不变对象,所以与传值方式效果一样。

4.2.2 函数默认参数
function 函数名(形参:类型 = 默认值)

4.2.3 形式参数数组
函数中默认自动生成的arguments对象中保存有所有定义中的形参参数

AS2.0中的arguments数组形参对象,存放所有传入的不定个数的形参参数。
而在AS3.0中,argument则被严格限定存放形参定义中所定义个数的形参。
arguments对象有一个length属性和一个callee方法。

function 函数名(形参:数据类型,形参:数据类型){
    trace(arguments.length)
    arguments.callee
    //调用函数本体,一般用于创建递归
}

如果需要传入任意多个参数,则使用AS3.0中的rest关键字,即 ...
特殊关键字 ...(rest)

function 函数名(...参数名){
    //参数名可随意定义
    trace(参数名.length)
}

最后要注意的,arguments与...rest关键字不能混用,使用了...rest则arguments则不能再使用

┏━━━━━━━━━━━━━━━━━━━━┓
┃ 第二部分:ActionScript 3 面向对象编程 ┃
┗━━━━━━━━━━━━━━━━━━━━┛
================================================
第5章 类和对象 ━━ 从定义到原理
================================================
5.1 基本类结构

基本结构:HelloWorld
package
{
public class Hello
{
    public var helloString:String = 'World';
    public function Hello(){
    }
    public function sayHello():void{
        trace("Hello");
    }
}
}

ActionScript3中的类如果想被外部访问,必须放在package(包)中
构造函数与类名相同,为与其它类内函数区分,一般首字母大写。

5.2 Class(类)和Object(对象)
类是对象结构的描述。

5.3 Class的成员
ActionScript3中的Class(类)的构成
·Class的名称和包路径
·构造函数
·属性:包括实例属性和表态静态属性
·方法:包括实例方法和静态方法

AS3中对类的默认访问控制是internal(包内可见),而非AS2.0中的public

5.4 Class和object的创建和使用
5.4.1 创建Class
参看5.1 基本类结构

5.4.2 创建类的实例
import 包路径.类名
///相同包下,不用import类名,可直接引用

var 对象 = new 类()
var 对象:类 = new 类() //推荐

new 关键字后跟的其实不是类名,而是类的构造函数

5.5 Class和package(包)
package格式:
package 项目根.包路径
比如:
package com.kinda.book.display

类名统一用大写字母开头,包路径统一用小写

类体结构安排:
package [包名]{
    import 类包;
    public class 类
    {
        //private 静态属性
        //private 静态方法
        //private 实例属性
        //构造函数
        //实例方法
        //静属 静方 实属 构函 实方,声明类内数据的五个顺序
        public function 构造函数(){
            //函数代码   
        }
    }

}

5.6 实例属性和实例方法
实例属性和实例方法类似于动态网页语言中的session,不同的类实例(对象)中的实例属性可以有不同值 。
5.6.1 实例属性
访问控制符 var 属性名:数据类型;
访问控制符 var 属性名:数据类型 = 值;

访问控制符可以是 internal public private protect 或者自定义的namespace标识

默认为internal - 包内成员可以访问,包外不可访问

5.6.2 实例方法
访问控制符 function 方法名(形参):返回值类型{
    //方法内容
}

5.6.3 访问实例属性和实例方法
使用new 语法实例化对象后,
对象.属性|方法名

5.7 静态属性和静态方法
静态属性和静态方法类似于动态网页语言中的Application,不同的类实例(对象)间共享类中共同的属性和方法。

声明静态属性:
static var 属性:数据类型;
static var 属性:数据类型 = 值;
public static var 属性:数据类型;
public static var 属性:数据类型 = 值;

不加访问控制符时,默认同样是internal

如果要声明静态常量,需要配合使用 static 和 const

static const 属性:数据类型 = 值;

静态方法:
同样是使用static关键字
访问控制符 static function 方法名(形参):返回值类型{
    //方法内容
}

5.7.3 访问静态属性和静态方法
类名.属性
类名.方法
例:
Math.floor
Math.PI

为了避免与类内成员变量冲突,访问静态属性及方法时,即使在类体内访问也最好用 类名.属性 这样的格式来写

5.7.4 应用1:使用静态属性集中管理数据
public static const PI:Number = 3.141592653589793;
比如事件定义,一般都是使用静态属性的,那我们使用中文来定义属性,就可以在代码中使用中文事件了
比如:
public static const 播放:String = "play";

使用事件时就可以用 对象.播放 来实现代码的中文化了

5.7.5 应用2:使用静态属性部分实现Enumeration(枚举) [略]

5.7.6 应用3:实现工具类
如:Math String等类

5.8 构造函数
定义:构造函数用于创建对象时供系统自动调用的函数,实现数据的初始化操作
格式:
public 类名(形参){
    //构造函数名与类名相同,首字母大写,以与其它函数等区分
    //形参中同样可以使用...rest运算符载入不同个数的参数,实现类似重载的功能
}

5.8.3 构造函数的返回类型
构造函数只能返回undefined值,所以return没意义。
但return可以影响构造函数向下执行代码的顺序,遇到return时,其下的代码将终止执行。

5.9 Clas的种类:动态类和密封类
密封类在运行时不能动态添加属性或方法。
动态类在运行时可以动态添加属性或方法。
默认声明的类为静态类,动态类在class关键字前有 dynamic 关键字

注意:AS3.0中的 for...in循环, for each...in循环只能遍历动态类对象的动态属性

5.10 this关键字 [略]

5.11 ActionScript3中的方法重载
public 类名(...rest){
    //根据传入的函数个数进行处理
    //不支持不同类型参数的区分作为重载的标准

}

5.12 含有多个类的ActionScript3 类文件的标准例子
(1)每个AS3的Class都必须写个一个和类同句的.as文件中
(2)package包体括号内只能定义一个Class
(3)在package包体中定义的Class,必须与类文件名相同
(4)在package包体括号外还可以定义其它类,这种类,叫包外类,只能被当前as文件中的成员类访问

========================================================
第6章 ActionScript3中的封装:类的成员、类、包与访问控制
========================================================
公认OOP的三大要素为:封装、继承、多态

6.1 什么是封装 [概括]
封装(encapsulation),又叫隐藏实现(hiding the implementation),具体的意思是将实现的细节隐藏起来,只将必要的功能接口对外公开。打个比喻就是汽车,用户只需要知道踏油门就会加油,打方向盘就会转向,至于汽车内部的实现细节,用户不用知道,而这些细节,就是属于封装了。

在ActionScript3.0中,使用 访问控制说明符 来控制代码的可见度。
访问控制说明符从“毫无限制”到“严格限制”的顺序是:
public        完全公开
protected    在private的基础上,允许子类访问
internal    包内可见
private        类内可见

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                  引用原话:                                    ┃
┃                                                                                ┃
┃     一个好的OOP程序,就像人开汽车那样,对象和对象之间的交流只限于公开的接口。  ┃
┃  好的OOP程序,没有流程执行先后的概念,只有代码单元之间如何相互交流和协同工作   ┃
┃  的模式。这些代码单元,又被称为模块。模块在代码中的表现形式是一个单独的类或    ┃
┃  多个类。这些类共同协作,提供一种或多种服务。    那么如何让一部分接口暴露呢?  ┃
┃  如何隐藏不对外公开的方法呢?使用访问控制说明符,这是实现封装的一个重要方法。  ┃
┃  ActionScript3使用访问控制说明符来告知外部使用者,本代码单元有哪些成员可以被   ┃
┃  外部访问到,哪些不能被访问到。将访问控制符从“毫无限制”到“严格限制”        ┃
┃  排一下序:public、protected、internal和private。这些访问控制符,清楚明白地    ┃
┃  描述了每个部分的访问权限。一个优秀的OOP程序,会尽可能将单个代码单元的细节隐   ┃
┃  藏起来。换句话说,就是尽可能不要对外公开代码单元的成员。顺便说一句,不少OOP   ┃
┃  程序员最喜爱private关键字,因为这意味着最大的修改自由。很有意思,在OOP编程中,┃
┃  你对代码单元访问控制得越严格,日后你对代码修改的自由越大。                    ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

6.2 为什么需要封装
6.2.1 封装使修改代码更加容易和安全
封装使程序员在后期修改代码或在应用第三方代码的时候,可以在前期严格的访问控制定义下,令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值