您的位置: 首页 > 技术文档 > 多媒体制作 > 二进制在FLASH中的应用
ActionScript 3 日积月累之一 回到列表 Flash处理XML文档数据教程
 二进制在FLASH中的应用

作者:lzyy 时间: 2007-05-11 文档类型:原创 来自:蓝色理想
浏览统计 total:778 | year:778 | Quarter:778 | Month:778 | Week:313 | today:171

一说到二进制,我们总是或多或少的感觉没有底,因为接触的比较少,而且也不是那么直观,容易理解,这次就来谈谈在FLASH中使用二进制,老少皆宜哦。

首先来看一段程序var round:Number = 2;
var sweet:Number = 4;
var delicious:Number = 8;
var blet:Number = 16;

//苹果是甜的、圆的、好吃的
var apple:Number = round | sweet | delicious;

//下面我们来看看苹果是不是好吃的
if(apple & delicious){
    trace("apple is delicious");
}
//再来看看苹果是不是圆的
if(apple & round){
    trace("apple is round");
}

//再来看看苹果有没有腐烂
//这里不会输出,因为我们先前定义的苹果并没有腐烂
if(apple & blet){
    trace("apple is blet");
}

//假设我们的苹果腐烂了,那我们将加上腐烂这个属性,同时去掉美味这个属性
apple |= blet;
apple = apple & ~delicious;
//我们再来看看上面的输出
//第二个输出将不会显示
if(apple & blet){
    trace("apple is blet");
}
if(apple & delicious){
    trace("apple is delicious");
}

下面我们来分析一下上面的代码
我首先定义了4个属性,应该注意到了这四个属性的值分别是2的N次方,其实换成2进制就是10,100,1000,10000
接着又定义了一个apple变量,用到了"|"符号(按位 OR 运算符),官方的解释是:

expression1 | expression2

将 expression1 和 expression2 转换为无符号的 32 位整数,然后对于 expression1 或 expression2 的为 1 的对应位的每一位返回 1。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。

如果觉得不太能理解,那就以上面的例子为例。"10 | 100" 的结果是110,"110 | 1000"的结果是1110。所以apple的值其实就是二进制的1110,转换成10进制就是14
然后又出现了一个"&"符号(按位 AND 运算符),官方解释:expression1 & expression2

将 expression1 和 expression2 转换为 32 位无符号整数,并对整数参数的每一位执行布尔 AND 运算。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。

说白了,就是expression1和expression2的相同位数上必须都是1,那么在结果的对应位置上才是1,所以"apple & delicious"的运算过程就是"1110 & 1000"等于1000,所以判断成立

在加上了blet属性后,我们去掉delicious属性,这是通过"&"和"~"共同完成的,这里又出现了一个"~"(按位 NOT 运算符),就是一个取反运算,原来是0的变1,原来是1的变0,所以"apple & ~delicious"的运算过程是:首先对delicious取反,delicious原来是1000,取反之后自然变成了0111,再与apple执行&运算,"11110 & 0111",结果是10110,相当于去掉了delicious属性

二进制的一个比较典型的用法,就是可以用来保存多个属性,同时可以对这些属性进行基本的运算,这个在上面的代码中已经体现出来了。

补注:
其实,上面这种属性的声明方法并不是很明智,因为一旦属性比较多的话,还得去计算2的N次方到底等于多少,所以,可以采用下面的方法。var shifts:Number = 0;

var ONE     = 1 << shifts++; // 1
var TWO     = 1 << shifts++; // 2
var THREE     = 1 << shifts++; // 4
var FOUR     = 1 << shifts++; // 8

"<<"(按位向左移位运算符),比如"2 << 2"的结果就是8,就是将2的2进制"10"向左移两位,也就是"1000",转换成10进制就是8。


经典论坛讨论:
http://bbs.blueidea.com/thread-2742543-1-1.html

本文链接:http://www.blueidea.com/tech/multimedia/2007/4698.asp 

出处:蓝色理想
责任编辑:elesa

◎进入论坛Flash专栏版块参加讨论

相关文章 更多相关链接
ActionScript 3 日积月累之三
ActionScript 3 日积月累之二
ActionScript 3 日积月累之一
Flash处理XML文档数据教程
《Flash与后台总动员》即将面世
作者文章
[flash] 多图动态载入
事件侦听器示例汇总
OOP编程实例——音乐播放器
用AS画图,自定义多边形及圆形
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
"注册"比"登录"更醒目?
牛牛和妞妞
从 AS2 到 AS3
ActionScript 3 日积月累之三
ActionScript 3 日积月累之二
ActionScript 3 日积月累之一
用javascript 转换外部链接样式
用CSS属性选择器控制链接样式
网页中各度量单位的比较
二进制在FLASH中的应用
栏目最新 栏目最新列表
从 AS2 到 AS3
ActionScript 3 日积月累之三
ActionScript 3 日积月累之二
ActionScript 3 日积月累之一
用javascript 转换外部链接样式
用CSS属性选择器控制链接样式
网页中各度量单位的比较
二进制在FLASH中的应用
Flash处理XML文档数据教程
PS制作从乌云中透出阳光

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

本文现有 1 条评论 评分:- llllllllllllllllllll + 评分人数: 1 ,平均分: 5.00


GavinTeng Publish at 2007-5-14 10:01:48 评分5
ok
您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
Don't Make Me Think 第2版
HTM与CSS入门经典(第7版)
《FLASH MX2004网站开发精粹》
《CSS入门经典》
《网页配色密码》
《设计师谈网页设计思维》
《Photoshop实用技能案例详解》