频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 虚拟主机  域名注册     常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> 谈谈Flash的一些语法基础和系统核心 2.3 object :引用 — 一个幽灵

谈谈Flash的一些语法基础和系统核心 2.3 object :引用 — 一个幽灵

作者:未知  来源:转载  发布时间:2005-8-12 20:15:54  发布人:acx

减小字体 增大字体


参与本文讨论:闪吧本文讨论帖
2.3 object :引用 —— 一个幽灵

和java类似,flash里面的另外一类变量就是引用。 你也许很熟悉C里面的结构或者C++里面的类。我们定义一个struct ,它拥有自己的成员属性,比如name、pos等等。对于类C的构架来说,一个结构体就像一块石头,他的每个成员都是固定的,你甚至有办法知道他在你的虚拟空间中的地址和大小。这种确定性带来了安全和灾难。
它是定制的,定制的东西就是简单的,可以避免很多小错误;
然而定制的东西是不同用的,你需要通用性的时候灾难就出现了:比如,如果你要实现一个通用堆栈……可是不同的对象类型不同,int型堆栈只能用于int,student堆栈只能用于student……你就需要使用模板、虚函数多态等等一大堆咚咚
其他的灾难比如饱受指责的内存管理什么的就不说了。
object是一个很有意思的东西,他和C /C++的复杂类构架的区别在于:他是一个幽灵。
我们可以这样创建一个object:
{} 或者 new Object();
他们在语法上是等价的。 那么这个Object在什么地方呢?没有人知道。我说过,他是一个幽灵。
如果你直接写一个Object,但是不把它赋值给任何变量,那么你创建了一个“匿名对象”,但是谁也得不到他:
{}; //创建一个空的匿名Object
new Color( this ); //创建一个匿名的Color对象,初始化参数为this
你可以在很多地方使用匿名Object,你召唤并且使用他,然后他就消失了,比如
new Color( this ).setRGB(0xFF0000); //当前mc变成全红 你可以用一个变量抓住他很长时间,直到这个变量用于抓住或者装另外的东西:
var a= new Object();
这样,这个变量仿佛就是 我们建立的Object一样,但是这只是一个假象。
我们控制了这个Object吗? ——是的,你看,我们可以操作这个Object:
a={}
a.hp = 100;
trace(a.hp)
a. littleObject= {}; //在a下面建立一个新的object
a. littleObject. x =10;
a. littleObject. y =20;
trace(a.littleObject + " x:"+ a.littleObject.x + " y:" +a.littleObject.y);
输出: 100
[object Object] x:10 y:20 和flash的其他特性一样,一个object可以装下任何东西,没有任何母版的限制。但是你却无法真正获得它:你无法杀死他。
接着上面的代码,加上:
delete(a);
trace(a);
trace(a.hp);
噢,出现的结果是:
undefined
undefined a被删除了,不是吗?
不是的。你删除的只是抓住a的变量。如果你同时用b抓住那个object,你会发现,那个object其实还是漂浮在某处~~~~
a={} //a引用一个新建立的object
b=a; //b也引用同一个object
a. xx =10;
trace("Before delete a, a.xx:" + a.xx + " b.xx:" + b.xx);
delete(a);
trace("After delete a, a:" +a + " b.xx:" +b.xx)
//---------------------------------------------------------------------------------------------- Before delete a, a.xx:10 b.xx:10
After delete a, a:undefined b.xx:10 你看,被删掉的只是他的一个名字……只要仍然有变量能够访问他,他就永远存在…… 那么那个幽灵什么时候消失呢?谁也不知道。在所有人都遗忘了他之后,当没有一个活动变量引用他的时候,可怕的~~~~ 垃圾处理器~~~~ 会自动删掉他的~~~~ 然而,他是什么时候被删掉的? 谁也不知道……
链表的实现片断
好嘛,记住,你的变量名只是“抓住”了幽灵而已,它不会产生和消除实例。知道了这些,你就可以实现你的链表了~~~
比如这些操作片断:
nodeNow.next = {}; //建立新的node
nodeNow = nodeNow.next;
nodeNow.data = newData; //删除nodeNow.next的方法
nodeNow.next = nodeNow.next.next; //注意,不需要删除 nodeNow.next,也不需要知道nodeNow.next.next是否存在 //遍历
var nodeNow = nodeHead;
while(nodeNow !=null){
doSomeThing();
nodeNow = nodeNow.next;
}
但是你真的需要链表吗? 在2.5 和2.6 你会明白,flash已经拥有更好的东西了。
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 头像-qq头像(qq新头像)4..
· 注册码大全十
· 注册码大全三
· 让你轻松架设FTP服务器1..
· 梦幻背景图片7
· 卡通动物图片6
· 风景图片8
· 网页制作素材-按钮素材2..
· 注册码大全九
· 让你轻松架设FTP服务器5..
· 50MB免费空间 FTP PHP M..
关注此文读者还看过
· GoogleAdSense容易被K的..
· "上帝"的指南针 消费类网..
· 验证码的程序及原理
· 不用数据库的多用户文件..
· PhotoShop制作超酷黄金喜..
· Flash模拟360度互动环景..
· 请问:下拉式菜单中的选..
· 最高司法解释称反向工程..
· 使用Fw MX插件 3D Primi..
· Flash MX2004入门与进阶..
· 通过ASP.net程序创建域帐..
· ASP.NET: Connection St..
· 在ASP中使用SQL语句之7:..
· MYSQL到ORACLE程序迁移的..
· Serv-U:快速构建功能强大..
· SMTP、POP3、NNTP、FTP、..
相关文章
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
· 谈谈Flash的一些语法基础和..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
免责申明:中国建站之家(www.jz123.cn)上的所有提供下载的软件和资源
均来源于网络,为软件或程序作者提供和网友推荐收集整理而来,仅供学习
和研究使用。如有侵犯你的版权,请立即联系我们,本站将在3个工作日内删除。
粤ICP备05092265号