频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 虚拟主机  域名注册     常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> 仿小小的控制菜单 第十一章 一点面向对象编程知识

仿小小的控制菜单 第十一章 一点面向对象编程知识

作者:未知  来源:转载  发布时间:2005-8-11 21:17:26  发布人:acx

减小字体 增大字体


At   is   heart,   OOP   simply   means   that   you   treat   portions   of   your   program   as   self-contained,   but   interrelating   modules   called   objects.   
这是什么呀?我不翻译了,概念的我们就先不懂吧,对象主要构成包括属性(properties)和方法(methods)
一个对象通常都以现实世界里的某个东东做蓝本
例如我们可以定义一个对象叫球
那么这个球将会有这样的属性:半径、X坐标、Y坐标、颜色
同时,也会用属于球自己的方法例如:移动球、计算球的面积   
当然,我们还可以定义一些相对抽象的对象,例如我们要做的多选题   
所有的对象都属于某类(class),类的意思其实是用于创建对象的模版   
一个实例(instance)就是某一个类的特定某一个case(好复杂,概念性的东西我翻不过来啦,反正实例就类创建出来的某一个对象)   
还是再举例吧
*   例如我们有个一个叫Chair的类
*   这个类定义了一个东西需要它有四条腿,一个坐垫
*   然后我们就可以用Chair这个类来定义我们的不同对象(可理解为椅子的款式),每个对象就有它特有的高、宽、材料、重量、颜色,正是这些属性使每个对象互相区别。   
所有的椅子互相区别,有自己的属性,但是他们又有同样的结构:四条腿、一个坐垫   
OK,那AS里面的类和对象呢?
是的,AS里我们可以自己创建对象,也有可以使用的内建对象
内建的类(你可以用它来创建对象)包括:Array,   Boolean,   Color,   Date,   MovieClip,   Number,   Object,   Sound,   String,   XML,   XMLSocket   
内建的对象(已经可以直接使用的对象)包括:Arguments,   Key,   Math,   Mouse,   Selection   
内建的类、对象当然都是在FLASH里面有自己功能的东西。而正是这些功能非常常用,FLASH才内建了这些类和对象,例如:
Mouse.hide();   //   Hide   the   mouse   pointer   将鼠标隐藏,你经常用吧?现在才知道其实是内建的Mouse对象的一个hide()方法吧?   
在学习如何创建自己的类和对象之前,先来了解一下内建类和对象是怎样工作的吧   
与数组的结构类似,对象是容器们(containers)的容器(container)
一个对象,用各个独立的属性来存放数据,只不过数组区分每个容器是用数字,而对象则是用属性名,要调用一个数组里面某个数据,我们需要它是索引值,而要调用对象的属性,则要知道属性名
看看以下这个例子,这是个叫BALL的对象“

BALL对象有两个属性:radius   和   color
而两个属性分别赋值为:50   和   0xFF0000   (这是AS里面表达16进制的方法)   
概念清楚了,说一AS里面使用对象要注意的地方
首先,对象的属性很灵活,它储存的数据可以是strings(字符串),   numbers(数字),   booleans(布尔值),   null(空),   undefined(未定义),   functions(函数),   arrays(数组),   movie   clips(电影夹子),   or   even   other   objects(甚至是其他的对象,包括自定义的).   
调用属性,可用点语法:objectName.propertyName
例如我们赋值给BALL里面的属性radius:
ball.radius   =   100;   
我们也可以用符号&#;来访问属性,但是&#;里面的属性名需用双引号扩住,同上例:
ball["radius"]   =   100;   (所以说数组也是对象一种,访问方法也一样,并没有搞特殊化)
与点语法比较,&#;更灵活,可以动态地改变属性的名字,里面可以是变量或表达式,例如:
var   propName   =   "radius";
ball[propName]   =   100;   
这点是点语法无法办到的   
纯粹的OOP中,我们几乎不会直接访问对象的属性
我们一般都使用方法(methods)   ,来改变属性
例如改变mySound这个声音对象的音量属性
AS的用法应该是mySound.getVolume(100);
而不是mySound.volume=100;
但是为了简单,多选题这个例子里不一定遵循这个原则,事实上AS里面很多对象都不可以办到这点,所以有人说AS不是面向对象语言。   
关于对象的方法
方法method其实是一些附属于对象的函数,其作用主要是访问对象中的数据,或完成某种功能
所以调用方法和调用普通函数类似:objectName.methodName()   只是前面加上了对象的名字
例如上面的BALL对象,我们需要它的面积,使用   getArea   这个方法:
ball.getArea();   
预习一下,在下一个例子中,虽然MOOCK不打算建立自己的方法,但是将使用内建于MovieClip对象的两个方法:
*MovieClip.attachMovie()
此方法是将Library(CTRL+L按出来的那个)里面的symbol复制一个instance到场景中
(chocobo:给不懂概念的人紧急补习,放在库(Library)里面的叫符号(symbol),拉到场景中就叫实例(instance),一个符号可创建多个实例,符号改变则实例随之改变)
与之类似的是MovieClip.duplicateMovieClip(),但是该方法需要事先在场景里已经有一个实例   
*MovieClip.removeMovieClip()
此方法与上面相反,是删除场景里面的instance的   
大家看到了,在下一例中,我们将使用MovieClip这个内建对象,因为它就可以满足我们的需要,不必新类型的对象了
我们先来熟悉一下MC这种对象   
它有很多属性_height(高度)、   _alpha   (透明度),MC的属性大家可以在AS字典里面查到,在AS面板里这写属性也是变色显示的
同时MC的方法,例如   MC.play();   等也可以查到
当我们在MC里面的时间线使用这些属性、方法的时候,可以省略不写前面部分,直接写play();   
MC可以互相嵌套,MC当中又有MC,就出现类似:   mc1.mc2.play();   的情况
为了调用包含自己的上一级MC的方法、属性,AS里面用_parent,例如:
在mc1包含mc2   ,在mc2中想使mc1播放:_parent.play();   
还有另一个保留字:_root指代该电影的主时间线
例如想在某个mc里面让整个电影播放:_root.play();   
想在某个MC中让另一mc1播放:_root.mc1.play();   
还有,MC中定义的变量,将作为MC的一个属性可被访问
在mc1里面写了一句   var   a=1;
我们将可使用   mc1.var来调用它   

关于类(class)
这个概念大家还是不大懂吧?类就是定义一个对象将拥有什么的方法跟属性的东东,类似MC里instance与symbol的关系,instance的结构就是由symbol决定的,每个instance又可以不一样
AS里面没有专门定义类的例如class这样的关键字,我们使用函数来定义类,这种函数称构造函数constructor   function,函数的作用就是产生我们定义好的类的实例(就是对象)
举例最实在:
//   make   a   Ball   constructor   最简单的构造函数
function   Ball   ()   {
//   do   nothing   里面是空的
}   
现在我们可以定义新类型Ball的对象了
myBall   =   new   Ball();   
语法就是前面是新对象实例名,等号后是new加构造函数名
myBall就拥有了Ball定义的一切结构了(虽然Ball里面是空的,嘻嘻)   
不过不是所有对象创建都用new,例如mc创建就用的是attachMovie()或duplicateMovieClip()   
好了,我们的构造函数总不能空的,如何定义类,让新对象有自己的属性呢?
使用this这个关键字,看例子,新的构造函数:
function   Ball   ()   {
this.radius   =   10;
this.color   =   0xFF0000;
this.xPosition   =   35;
this.yPosition   =   -4;
}   
以后我们定义出来的新对象,都拥有半径,颜色、XY坐标属性啦
慢着,怎么每个新对象都一模一样啊?
再改,用函数的参数来定义动态的属性:
//   Make   the   Ball   constructor   accept
//   property   values   as   arguments.
function   Ball   (radius,   color,   xPosition,   yPosition)   {
this.radius   =   radius;
this.color   =   color;
this.xPosition   =   xPosition;
this.yPosition   =   yPosition;
}   
我们可以定义不同属性的对象了
myBall   =   new   Ball(6,   0x00FF00,   145,   200);   
本教程关于还有创建方法以及如何在类之间继承方法和属性没讲,
无论如何,OOP都不可能在这么短时间之内说清楚,
但这不妨碍我们做下一个例子了。


[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 头像-qq头像(qq新头像)4..
· 注册码大全十
· 注册码大全三
· 让你轻松架设FTP服务器1..
· 梦幻背景图片7
· 卡通动物图片6
· 风景图片8
· 网页制作素材-按钮素材2..
· 注册码大全九
· 让你轻松架设FTP服务器5..
· 50MB免费空间 FTP PHP M..
关注此文读者还看过
· JSP由浅入深(6)
· PHP脚本的8个技巧(4)动态..
· Photoshop下载笔刷的载入..
· 实例演练ASP+XML编程(1)..
· 圆环相切效果的制作(2)
· MySQL数据库及其ODBC接口..
· 避免OOP的形式,POP的思想..
· 人像照片Photoshop处理三..
· FW MX 2004教程:绘图工具..
· [Photoshop教程]作品拼贴..
· 永恒工作室提供100M电信..
· Photoshop 做高介质水晶..
· 解决ASP执行DB查询中的特..
· 网络游戏市场将达80亿
· asp+ 如何跨站抓取页面
· php优化及高效提速问题小..
相关文章
· AS基础精典教程 第十一章 一..
· 仿小小的控制菜单 第六章 再..
· 仿小小的控制菜单 第八章 第..
· 仿小小的控制菜单 第七章 可..
· 仿小小的控制菜单 第九章 数..
· 仿小小的控制菜单 第十章 第..
· 仿小小的控制菜单 第十二章..
· 仿小小的控制菜单 第十三章..
· 仿小小的控制菜单 第十四章..
· 仿小小的控制菜单 第三章:..
· 仿小小的控制菜单 第二章:..
· 仿小小的控制菜单 第四章 还..
· 仿小小的控制菜单 第五章 开..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
免责申明:中国建站之家(www.jz123.cn)上的所有提供下载的软件和资源
均来源于网络,为软件或程序作者提供和网友推荐收集整理而来,仅供学习
和研究使用。如有侵犯你的版权,请立即联系我们,本站将在3个工作日内删除。
粤ICP备05092265号