AS3殿堂之路、AS3从入门到精通 读书笔记

我在公司实习时叫我看的《殿堂之路》,语法那块看起来还好但始终觉得这书有点不爽,也浪费了我很多时间。后来毕设的时候看见参考文献有《从入门到精通这本书》看后果断要给力点。今天突然想起去豆瓣搜索下评分确实要高。但是也发现了很多更好的书,当初如果不急着学AS3现在学到的东西肯定多点。
    以后学知识搜书籍,先豆瓣一下吧,再挑下适不适合自己。比如学linux有《一站式c》、《私房菜》、《linux下编程》。我更喜欢最后那本,第一本作者新版都不要linux那几个字了,第二本名字只有linux而没有编程那个部分。对我这种急功近利的不想深入linux再学linux下编程就所以选最后那本。
    最后记住 head first系列书最好,从入门到精通系列书还行。
-------------------------------------------------------------------------------------------------------------------

第1部分 Actionscript 3语言基础

第一章 了解Actionscript 3

    第一个"Hello,world"程序有三种方法,fla的主时间轴或文档的类绑定、直接用builder编译成swf。
    主时间轴的对象:root 舞台Stage实例:stage。

第二章 Actionscript 3语言基本元素

1.数据类型
    一切皆对象。变量持有引用,而引用则指向要操作的对象。
    基元数据类型Boolean、int、uint、Number、String是值类型(创建时不需要new,需要new的一定不是值引用),复杂类型是引用类型。基元数据类型通过不变对象使编译器内部统一都是引用(对我们没影响)。

var 变量名:数据类型 = 值;//变量的声明  
const num:int = 10;     //常量的声明  
    未声明类型(var h; var i:*)为 undefined    String、Array、Object默认值为 null    默认值:int、uint默认值为0;Number为NaN(Not a Number); Boolean为false         //其实只有一个特殊的
    常用函数:int.MAX_VALUE dval.toFixed(2)保留几位小数
              a.toString(16) parseInt("1100", 2);
2.运算符
    运算符本质是函数。
    添加的运算符:typeof、is、as、in

第三章 Actionscript 3流程控制

    条件:if-else、switch 
    循环:for、while、for-in、for each-in; break、continue
    帧循环:gotoAndPlay(2)到这一帧时跳到第2帧
stage.frameRate = 30;  
mc.addEventListener(Event.ENTER_FRAME,onMove);  
    注:如果多次使用enterFrame事件只有最后一次有效。
    间隔循环:
    setInterval用法
var id:uint = setInterval(函数名,间隔毫秒,传入函数的参数)  
clearInterval(id);                 //清除间隔标记
   setTimeout用法:
   Timer类
var myTimer:Timer = new Timer(1000,3);        //间隔1000ms,3次  
myTimer.addEventListener(TimerEvent.TIMER,timerHandle);

第四章 Actionscript 3中的函数及高级使用技巧

function 函数名(参数):void{  
}  
[其他] view plaincopy
arguments.length;        //传入参数的长度  
arguments.cellee(a-1,b-1,c-1);    //递归调用本函数  
    参数:按值还是按引用传入同C++;默认参数也是同C++参数列表从左到右默认补充的从右到左。    函数语句定义时法像以前的C++其实有点变扭,在编译的时候会被提升到最前面,不用像C++那样先定义再使用。但是AS 3中函数名就是一切想怎么用就怎么用。
如果定义 ...paras,参数就传给数组paras不能调用arguments。

第2部分 Actionscript 3面向对象编程        

第五章 类和对象

    建立类和对象,实例属性和方法、静态属性和方法、构造函数都像C++。
    局部变量->方法参数->实例属性->静态属性的查找顺序。
    但舍去了C++繁琐的地方。析构函数(高级语言自动回收)和复制构造函数没有了,静态属性终于不用那么反人类思维了。C++中有点怪的enum也没了,const函数也没了,函数重载也没了。

第六章 Actionscript 3中的封装:类的成员、类、包与访问控制

    public、internal、protected、private四个访问级别 。默认访问级别都是internal
    类的访问控制只有internal(默认,包外类就是internal)、public。
public function get hello():void{  
    return m_strHello;  
}  
public function set hello(str:String):void{  
//其实传入参数的形式我老是忘记o(╯□╰)o  
    m_strHello = str;  
}  

第七章 命名空间

第八章 复合与继承

    关键字extends从父类继承非private成员。
    但AS 3中类的静态成员不被子类继承但存在的范围链包括父类和所有子类(可以直接访问或通过父类,但不能通过子类)
    可以override方法,但不能重写实例。不能再子类中改变父类实例属性的类型,多态那里好应用。
    被final定义过的方法不能被重写,super持有父类的引用。super不能用在静态方法中。

第九章 多态

    向下转换是指:当一个子类对象以父类数据类型使用时,可以再将它还原成子类对象。利用is as

第十章 抽象类和接口

package 包路径{
    访问控制 interface 接口名称{
        function 方法名(参数:参数类型):返回类型 ;
        static function 方法名(参数:参数类型):返回类型 ;
        function get 方法名(参数:参数类型):返回类型 ;
        function set 方法名(参数:参数类型):返回类型 ;
    }
}
    最重要的用法是接收一个接口类型的对象:    通过implements实现接口,再在类里实现函数。(这里不是继承不要override,只有类的继承时要override)。
private fucntion printName(o:IhasName):void{
    trace(o.name);
}

第3部分 核心类

第十一章 核心类和全局函数

第十二章 数组:Array

    数组里可以包含不同类型的元素了,
    访问:a[i] a.length();
    基本操作:
查找:indexOf、lastIndexOf 超找目标元素在数组中的下标
目标数组.indexOf(要查找的元素);
目标数组.lastIndexOf(要查找的元素);
在数组首尾增加元素:push、unshift
在数组首尾删除元素:pop、shift
  
在数组中插入或删除连续的元素:splice
数组.splice(删除点的索引,要删除元素的个数);        //删除某位置之后几个元素
数组.splice(删除点的索引);            //删除某位置之后所有元素
数组.splice(删除点索引,0,元素1,元素2...);        //在数组某位置后增加元素
  
获取数组中部分元素:slice
数组.slice(起点索引,终点索引);        //老规矩不等于终点
  
排序:reverse、sort、sortOn
数组.reverse();        //倒序
数组.sort(函数);
    还有些操作数组每个元素的,暂时没认真看。

第十三章 String

    字符串是不变对象,对+、=及关系符号重载
访问字符:charAt();            //没有中括号了坑爹,因为不能更改字符的原因不然和中括号违背
长字符串.indexOf(短字符串);
长字符串.slice(起点位置,终点 位置);
split();
toLowerCase();
toUpperCase();

第十四章 强大的正则表达式

第十五章 XML数据处理

    1.简明语法:
1.XML语法必须有一个根目录,而且只能有一个。
2.开始标记和结束标记必须承兑出现。
3.所有的XML必须合理的嵌套。
4.XML大小写敏感。
5.XML命名必须遵守下面的规则
    元素的名字可以包含字母数字和其他字符
    不能以数字或标点开头
    不能以xml的各种大小写开头
    不能包含空格
6.每个元素可以带有自己的属性,属性值必须使用""标记
7.XML注释写法:<!--注释内容-->
8.XML文档中的所有文本都会被解析器解析,只有<![CDATA[忽略内容]]>内的被忽略。
    2.创建:
    var kindaXML:XML = 
    下面按正常写就行...
    3.操作
    使用 .和 @

第十六章 异常和错误的捕捉与处理

第十七章 目前主要的API概览

第十八章 事件发送和处理

    DOM3事件的执行流程:注册侦听器、发送事件、侦听事件、一处侦听器。
    新特色:事件流机制与视图元件紧密结合、侦听器优先级、侦听器弱引用
    注册和移除事件:
kingda.addEventListener();
kingda.removeEventListener();    
自定义事件:
public class OrderEvent extends Event{
    public static const ORDER_DISHES:String = "点菜";
    private var _dishes:Array;
    定义get set
}
发送事件时,定义个OrderEvent对象,修改内容,dispatchEvent(该对象)

第十九章 网络通信基础

var request:URLRequest = new URLRequest();
request.url = "http://www.flash.com";
request.data = variables;
  
var loader:URLLoader = new URLLoader();
loader.load(request);

第5部分 视觉编程

第二十章 视觉编程精要

可以显示的对象,既包括可以直接看见的文字、图片、视频等,也包括显示对象容器。

等级:最上层是舞台,舞台下面是当前SWF主类的实例,最后才是自定义的。root指向的是当前主类的实例!

显示列表:出现在显示列表中的显示对象才显示,不然不会被渲染。

划分:统一于DisplayObject,是否可接受互动事件,是否为容器。

所有显示对象可以发送事件,但要注意非InteractiveObject。

显示对象容器:Sprite、Loader、Stage。而MovieClip是Sprite子类多了个时间轴。

第二十一章 显示对象的一些基本概念

显示属性:X、Y、width、height、scaleX、scaleY、rotation、alpha、visible。

非显示属性:name、parent、root、stage、mask。

21.1 矢量图Graphics

方法:单一填色:beginfill、绘制直线:lineTo、drawCircle、drawRect、moveTo。

var circle:Shape = new Shape;
circle.graphics.beginFill(0xff0000);
circle.graphics.drawCircle(100,100,40);
circle.graphics.endFill();
addChild(circle);
21.2 位图Bitmap

矢量图体积小但耗资源,位图耗内存,计算少。

Bitmap的像素信息存储在BitmapData里。

属性:bitmap.bitmapData、data.clone();

21.3 遮罩

obj.mask = msk;
addChild(obj);
addChild(msk);
如果缩放舞台或移动遮罩对象时遮罩一同改动,必须把遮罩加入显示列表。

21.3 文本TextField

type:默认动态文本,可以设为输入文本,静态文本只能cs创建。

htmlText:"<u><a href = 'event:geturl|            > </a></u>;

文本框中追加文本用高效的appendText();

碰撞检测:hitTestObject(对象)、hitTestPoint(x,y,shapeFlag)默认false为边框,true为实际像素;

第二十二章 容器、深度管理

addChild()、addChildAt()、removeChild()、removeChildAt(),contain()、swapChild()、setChildIndex()

从0开始自动管理,列表前面的显示前面,sprite类画的始终在最后面不归显示列表管理。

MovieClip是动态类,Sprite是密封类。

访问:cs中创建的可以用点号访问。

第二十三章 Flash CS:库元件的绑定与Stage、文档类

Flash CS中为AS导出,在类里写上完整路径,就和AS中的类绑定了。不需要在类里重新加载swf简单了。

如果影片剪辑类元件在满足没有指定绑定类,帧中没有加入脚本,没有手工输入子元件的name属性的条件下下,编译器就将该元件作为一个普通的MovieClip对象进行编译;

如果不符合上述条件编译器则自动生成一个MovieClip子类,将舞台上的剪辑元件编译成该类的实例。

第二十四章 显示编程与事件、人机交互

事件流机制:捕获阶段、目标阶段、冒泡阶段。

target:发生事件的显示对象;currentTarget当前侦听事件的显示对象,一般为容器。

24.1 鼠标事件

单击:MouseEvent.CLICK、MouseEvent.DOUBLE_CLICK

按键状态:MouseEvent.MOUSE_UP、MouseEvent.MOUSE_DOWN

鼠标悬停或移开:MouseEvent.ROLL_OVER、ROLL_OUT

鼠标移动:MOUSE_MOVE 鼠标滚轮:MOUSE_WHEEL

属性:1>鼠标坐标:localX、localY,舞台坐标:stageX、stageY

    2>按键是否按下。

24.2 键盘事件

键盘只有两个事件:KeyboardEvent.KEY_DOWN KeyboardEvent.KEY_UP

按键信息存在属性里:按键信息:KeyCode、CharCode

辅助键是否按下:altKey、ctrlKey、shiftKey

按键区域:keyLocation

24.3 拖曳、鼠标跟随

只有Sprite及其子类才可以创建拖曳效果

第二十五章 动画编程

Timer的定时更新不易与flash的屏幕更新同步,经常产生延迟情况;一般用Event.ENTER_FRAME。

Timer:

var timer:Timer = new Timer(500,20);//500ms,20次
timer.addEventListener(TimerEvent.TIMER, moving);
timer.addEventListener(TimerEvent.COMPLETE, completeTimer);

timer.start();
enter_frame:

this.addEventListener(Event.ENTER_FRAME, draw);
特效类:Tween、TransitionManager

第二十六章 Flash CS和flex的协同开发


  
  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值