as笔记。oop与算法。---1

      闪了一下 2004-7-13 18:29
今天买了一本好书!

清华大学出版社。
flash mx编程创意与实现。
[加]robert penner 著
杨洪涛 译。

看看就知。市面上唯一一本讲算法和oop(面向对象编程)的书!。。30大洋。不带光盘。360页。。
而且是mx的。。。但是我一看就晕了!正是我需要的啊!

好东西不敢独享!做成笔记。大家分享!!全部打字!!我用微软拼音啊!大家来点掌声。

先看目录。
第一章。过程和训练。
第二章。面向对象编程技术。(oop)
第三章。flash与数学1。三教学和坐标系.
第四章。flash与数学2。二维空间的向量.
第 5 章。flash与数学3。3维空间的向量.
第 6 章。基于事件的程序设计.
第 7 章。运动。变形和缓动。
第 8 章。flash与物理学.
第 9 章。as的颜色控制。
第 10 章。as绘图
第 11 章。北极光
第 12 章。暴风雪。
第 13 章。分形树。
第 14 章。龙卷风。

第一章。过程与训练。略去介绍作者的内容。。和我有点像。但是我基础不如人家好!摘抄几句格言:
1。成功————就是当准备遇上机会。
2。训练————为了实现不能通过直接努力实现的目标而进行的不断的练习!。。。!!!!!
3。习惯————重要!我们所遭遇的大部分成功和失败都可以归因于很久以前。多数是儿童时期养成的习惯。
4。自学————看帮助!
5。社团————社团给我的生活带来的两个特别的原则是“通过教来学”“开放源代码”

社团。。就是我们的论坛嘛!。。作者也是混论坛的哦!我现在就在边教边学哦。!!
第二章。面向对象编程技术。(oop)
1。对象 知识和能力
2。属性和方法。对象的属性就是变量。对象的方法就是函数。
看看最熟悉的对象。 movieclip
属性:mc._x, mc._y, mc._width, mc._height mc._alpha 大家都认识。
方法: mc.gotoandplay() mc.startdrag() mc.getbytestotal()
到某桢播放。 跟随鼠标 得到mc字节数。
3。类。class.是一个对象的蓝图。就像我是开发商。需要一份图纸。然后由图纸派生出的住宅,是这个类的一个实例。————这样可以节省大量开支。
4。flash的内置类和对象:
5。类和对象的区别。简单说。你可以构造他的实例,就可以叫做类。不能构造实例就是对象。例如math
能构造实例吗?。但是date就可以new 一个。。
其实。对象可以叫做内置类。哈哈。

6。类的构造函数。用来创建类的实例。。就是new ...
例。list=new array(); //生成空数组

可以提供参数
例。list=new array(5);//生成长度5的数组如果我们。测试。
trace(list);//在2004中得到 undefined,undefined,undefined,undefined,undefined

可以提供更多参数。
例。weekday=new array("monday","tuesday","wednessday","thursday","friday");//生成长度5的数组.并且赋值。测试下
trace(weekday);//果然得到————monday,tuesday,wednessday,thursday,friday

注:可以简便写为
weekday=["monday","tuesday","wednessday","thursday","friday"];

有的构造函数必须传递一个或者更多参数。例如color对象总是针对一个mc的。。
mycolor= new color(mc);

大家一定看帮助。可能有的类有你没有注意到的参数。。。哈哈
这些好像没有原码来的直接简单。看看有源代码的内容。反正对我来说。
有的语句第一次碰到。

第二章。面向对象编程技术。(oop)(二)
太多分开来写。。。。哈。上边的可以说是概念部分。下面的是有内容了。要分小标题。

1。可视类的实例化。。
botten moveiclip textfield 这三类成为可视类。他们可以在设计时“手工”创建。运行时。他们是类的实例。
其他的。例如数组array就不能放在画面中。所以不可视。
所以new可以创建不可视类的实例。但不能。创建可视类。。

可视类用。
attachMovie(); duplicatemoveiclip(); creatEmptyMovieClip()创建mc
moveiclip.createTextField()创建动态文本。

这种方法称为“工厂方法”(factory method)--创建并返回类的一个实例。

2。原型的属性。(就是类的属性。类当然有属性,方法了)

每个构造函数都有一个属性。称为prototepy(原型)是一个对象。验证如下。
trace(typeof Array.prototype);//object
trace(typeof Color.prototype);//object
trace(typeof String.prototype);//object

可视的也是object
trace(typeof Button.prototype);//object
trace(typeof MovieClip.prototype);//object
trace(typeof TextField.prototype);//object

内置的对象就没有(内置类)
trace(typeof Math.prototype);//undefined
trace(typeof Stage.prototype);//undefined
trace(typeof Mouse.prototype);//undefined

没有原型属性,就不能有构造函数。也不能成为类。原型对象就是将一个类维系在一起的纽带。(原型类好像我学习c++时候的继承类。。瞎说的。哈)

构造一个函数。看看。
function widget(){};
trace(typeof widget.prototype);//竟然输出object。说明继承了类的属性哦。

widget.prototype.size=10;//向widget.prototype中加入新属性
a=new widget(); //创建实例
trace(a.size);//得到10!!说行a从widget继承size属性。。

特别的。没有变成基础的哥们一定要注意!实例继承类的属性和方法是天经意义的事情:(房子不按照图纸造怎么可以???)

探寻!——————这种继承是怎么回事?_proto_属性是关键!每一个实例都有一个_proto_属性。指向类的原型。(就是指针啦!没有学习c的在听天书啦!大家可以理解为快捷方式就象是指针。指向某程序)当调用对象属性时。。先找属性,找不到。按照_proto_指针查询原型属性值。。(如此说来。我可以为所有的属性赋初值啦!哈哈!) 注意_proto_属性可以连成一条链。因为一个实例可以是经过好几代传下来的。(好像查查你的出身是不是有地主属性。要查到祖宗十八代。因为你继承了嘛!)

再次试验!
arr=new Array();
trace(typeof arr.__proto__);//得到object。
trace(typeof Array.prototype);//得到object。
trace(typeof arr.__proto__ == Array.prototype);//应该是true.但是我的2004得到flase.???

各位高手。。mx是不是得到true?????


标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
}