| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
新易网络提供100M
龙太极/100m/asp/
无限网络提供50M 
霞光科技50M/Htm/
苏能科技100M/FTP
悠博科技50M/FTP/

用AS来打造“密文解码器”           

用AS来打造“密文解码器”

作者:佚名 来源:作者: AIYI2003 更新:2007-1-13 20:48:31 错误报告 我要投稿

首先我们来看一下一个迷题:
A到Z到a到z排列成一个环,字母A用字母C代替,字母B则用字母D代替……
比如密文“ABC”解码后为“CDE”……
那么我们看一下“uuuDjYqfcpalyGWG”解码后会是什么呢?



用手一个一个的算???不会吧!我们有Flash   MX!虽然Flash不是用来开发软件的,但她的AS编程同样十分了得,下面偶就用Flash   MX   的AS来解决这个问题——我们可以用Flash 的AS来编写一个“密文解码器”,让Flash帮我们行进解密……
                                    Flash   世界最强の兵器
                 ——Action   Script
          100%Action打造“密文解码器”                           

                         真·AIYI

  首先,我先说一下基本的编程思路:
  1、看一下原文中的“A到Z到a到z排列成一个环,字母A用字母C代替……”我们先不管后面那几句,只看第1句,“A到Z到a到z排列成一个环”那么,编程的第1步已经有了:新建一数组1,元素为A-Z,a-z共52个元素,此数组即为密文数组(Miwen)。
  2、这时我们在看一下后面的那几句“字母A用字母C代替,字母B则用字母D代替……”这样,编程的第二步也有了:按原文提到的字母替换规则,将上面数组(Miwen)中所有元素向前‘移’两位,最前面的两位放到后面,得到一个新数组2,其元素为C-Za-zAB。
  3、这时我们看一下,数组1中的某位置上的元素(密文)的原文就是数组2相同位置上的元素。如数组1中第一个元素是“A”,而数组2中的第一个元素是“C”(即“ZT01”一文中提到的“字母A用字母C代替”……)
  4、我们只要将A-Z、a-z分别赋值为1-26、27-52。这时解密文时就只须将密文字母所代表的值来对应数组2中的元素即可(如“B”的值是2,那么在数组2中的第2个元素“D”就是“B”的原文……)。
  5、但在Flash中变量不分大小写,也就是说“A”与“a”(“B”与“b”……)代表的是同一变量。不过没关系,我们可以把大写的“A”双拼为“AA”、大写字母“B”双拼为“BB”,这样就与小写字母区分开了。
  6、当然,密文不可能是单一的一个字母,而是一串字母,这样我们就要用到String.substr(字符串截取)函数,并把截取的字母存放到新的数组中,再与数组2中的元素相对应就可得到明文。
  7、将所有Action写在一帧中与写入多帧中得到的效果是一样的(针对本文来说),但我们最好能有这样一个习惯:如没有特殊情况,最好将AS按其所完成的功能分别写入不同的帧中,这样日后修改起来会非常方便。

好了,既然基本的编程思路已经有了,那么开始编程吧!
<第1帧中的AS>
第一步:定义密文数组Miwen(),元素为A-Z,a-z
1、定义大写字母A-Z的数组Miwen1(),其元素为大写字母A到Z
miwen1=new   Array()
my_i=65
while   (my_i<=(65+25)){
   miwen1[my_i-65]=String.fromCharCode(my_i)
   my_i++
}

2、定义小写字母a-z的数组Miwen2()
miwen2=new   Array()
my_j=97
while(my_j<=(97+25)){
   miwen2[my_j-97]=String.fromCharCode(my_j)
   my_j++
}

3、将Miwen1与Miwen2联合为Miwen()
miwen=new   Array()
miwen=miwen1.concat(miwen2)

4、测试Miwen数组长度与数组内的元素
/*trace(Miwen.length)
 my_z=0
 while(my_z<Miwen.length){
   trace(Miwen[my_z])
   my_z++
 }*/

第二步:建立数组2 Yuanwen(),元素为C-Za-zAB

1、将Miwen数组中的元素‘copy’到Yuanwen1数组中
yuanwen1=new   Array()
yuanwen1=yuanwen1.concat(miwen)

2、将Yuanwen1中的元素进行‘移位’
yuanwen_AB=new   Array("A","B")
yuanwen=new   Array()
yuanwen=yuanwen1.concat(yuanwen_AB)
yuanwen.splice(0,2)

3、测试Yuanwen数组的长度与其元素
/*trace(yuanwen.length)
 my_z=0
 while(my_z<yuanwen.length){
   trace(yuanwen[my_z])
   my_z++
 }*/





<第二帧中的AS>
第三步:将A-Z,a-z分别赋值为1-26,27-52,但由于Flash中变量不分大小写,所以,大写的“A”双拼为“AA”、大写字母“B”双拼为“BB”,这样就与小写字母区分开了。

1、定义Big_abc()数组,元素为大写字母A-Z,并将大写字母全部‘双拼’,随后为其元素赋与相应的值。
my_i=1
big_abc=new   Array()
while(my_i<=26){
   big_abc[my_i-1]=String.fromCharCode(64+my_i)+String.fromCharCode(64+my_i)
   set   (big_abc[my_i-1],my_i)
   my_i++
}

2、定义Small_abc()数组,元素为小写字母a-z,并为其赋与相应的值。
my_j=1
small_abc=new   Array()
while   (my_j<=26)   {
   small_abc[my_j-1]=String.fromCharCode(96+my_j)
   set   (small_abc[my_j-1],26+my_j)
   my_j++
}


<第三帧中的AS>
第四步:将密文(myText)分别拆分为单个字母并放入myTexts()数组内(注意大写字母要‘双拼’),并用Mingwen_num()数组存储myTexts()数组元素所对应的数值。最后用Mingwen_num数组元素与Yuanwen()数组内的元素相对应即可得到明文。

mytext   =   "uuuDjYqfcpalyGWG"; //这就是密文了,可以做成输入文本
//将密文拆分为单个字母并放入myTexts()数组内
mytexts   =   new   Array();
mylength   =   mytext.length;
my_i   =   1;
while   (my_i<=mylength)   {
   mytexts[my_i-1]   =   mytext.substr(my_i-1,   1);
   my_i++;
}
//将大写字母进行‘双拼’
mycode   =   mytexts.join("");
mystr   =   new   String(mycode);
myteststr   =   new   String("a");
my_i   =   1;
while   (my_i<=mylength)   {
   mytexts[my_i-1]   =   mytext.substr(my_i-1,   1);
   if   ((mystr.charCodeAt(my_i-1))<(myteststr.charCodeAt(0)))   {
      mytexts[my_i-1]   =   mytexts[my_i-1]+mytexts[my_i-1];
   }
   //trace(mytexts[my_i-1])
   my_i++;
}
mingwen_num   =   new   Array(); //定义mingwen_num数组
//用Mingwen_num数组元素与Yuanwen()数组内的元素相对应即可得到明文。
mingwen   =   new   Array();
my_i   =   1;
while   (my_i<=mylength)   {
   mingwen_num[my_i-1]   =   eval(mytexts[my_i-1]);
   my_i++;
}
my_i   =   1;
while   (my_i<=mylength)   {
   mingwen[my_i-1]   =   yuanwen[mingwen_num[my_i-1]-1];
   my_i++;
}
mymingwen   =   mingwen.join("");  //可做为动态文本
trace(mymingwen);
stop();  //如果不加它的话会一直不停地出,所以还是加上个stop好了。


            这时,只要按Ctrl+回车测试,在弹出的Output窗口就会得到明文了。
  注:此“解码器”只能运行在Flash   MX测试环境中,如生成.swf   或   .exe文件后,则无法得到结果。由于此文的主要目的是讲解Action   Script的编程思路,所以并未介绍输出为swf的步骤。不过聪明的你一定会有办法的(提示一下,将myText做成输入文本的变量,而myMingwen做为一个动态文本的变量,再加入一个按钮,一个最简单的‘密文解码器’就诞生了。当然,如果你有兴趣和耐心的话,也可以把它做成标准的windows小程序:有菜单、有帮助说明、有版权信息等……)

   以上这些希望能起到抛砖引玉的作用,让更多的人喜欢上Flash   喜欢上AS……

源文件……
点击浏览该文件


文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。