设为首页  加入收藏  联系我们 繁體中文  

黑客软件:

  漏洞扫描 | 木马间谍 | 加密解密 | 远程控制 | 破坏攻击 | 杀毒软件 | 防火墙类 | OICQ专区 | 黑客必备 | 常用工具 | 网吧攻击
文章中心:   最新资讯 | 黑客技术 | 电脑基础 | 菜鸟文摘 | 网络安全 | 网络技巧 | QQ技巧 | OQ空间代码 | 免费资源 | 编程世界 | 建站技术
素材源码:   论坛相关 | ASP源码 | CGI 源码 | NET 源码 | PHP 源码 | 酷站素材 | 字体素材 | 图片素材 | 友情发布 | 网页模版 | 建站软件
教程动画:   黑客教程 | 黑客编程 | 网站入侵 | 菜鸟教程 | 入侵教程 | 破解教程 | 电子书籍 | 网页制作 | 高级会员 | 综合教程 | 本站原创


   

  您当前的位置:中华隐士黑客联盟 -> 电脑基础 -> Flash技术攻略 -> 文章内容 [站内搜索]  

 
Flash MX 编程深层次应用-高级特效(1)
作者:风未起时  来源:中国站长学院  发布时间:2006-11-16 12:27:50  发布人:www.hack86.com
第3章 ActionScript高级特效制作

3.1 堆栈特效(1)

    

本节的名字叫做堆栈特效,也就是说本节要讲解的内容不但要使用数组,而且要用堆栈来控制整个特效。我们将通过两个实例,深入地讲解堆栈在Flash特效中的应用,程序有一定的深度,希望大家认真地学习。

3.1.1  递归法画方格线

Flash经过几年的发展现在已经具备了强大的编程功能,很多地方已经很像一个专业的编程软件,比如递归调用、堆栈的使用、队列的使用、广度遍历、深度遍历等,这些只有在专业编程软件中才出现的应用在Flash中已经出现。下面这段程序就是利用队列完成一个画方格的功能:

init = function () {

    // 创建一个新的文本框,同时清空它

    _root.createTextField("dongua", 1, 160, 340, 120, 20);

    dongua.text = "";

    this.clear();

    cc1 = Math.floor(Math.random()*256) << 6;

    cc2 = Math.floor(Math.random()*256) << 16;

 // 这里的(x,y)表示要画格子的中心点坐标,a代表宽度,c1c4代表4个颜色值

    table = new Array({x:200, y:200, a:256, c1:cc1, c2:cc2, c3:cc2*2, c4:cc1/4});

};

_root.init();

_root.onEnterFrame = function() {

    //这里的1024代表这些线分割的小方块数目

    if (table.length<1024 && dongua.text == "") {

             //取出一个节点然后再画十字交叉线

             t = table.shift();

             cc = Math.floor((2*t.c1+3*t.c2+4*t.c3)/6);

             _root.lineStyle(2, cc, 100);

        //用两个点的宽度,cc的颜色值,画出两条交叉的十字架线

             _root.moveTo(t.x-t.a/2, t.y);

             _root.lineTo(t.x+t.a/2, t.y);

             _root.moveTo(t.x, t.y-t.a/2);

             _root.lineTo(t.x, t.y+t.a/2);

             //4个区块入栈,这样设置颜色可以保证对角的颜色相同

             table.push({x:t.x-t.a/4, y:t.y-t.a/4, a:t.a/2, c1:t.c2, c2:t.c3, c3:t.c1, c4:cc});

             table.push({x:t.x-t.a/4, y:t.y+t.a/4, a:t.a/2, c1:t.c4, c2:t.c2, c3:t.c1, c4:cc});

             table.push({x:t.x+t.a/4, y:t.y-t.a/4, a:t.a/2, c1:t.c4, c2:t.c2, c3:t.c1, c4:cc});

             table.push({x:t.x+t.a/4, y:t.y+t.a/4, a:t.a/2, c1:t.c2, c2:t.c3, c3:t.c1, c4:cc});

    } else {

             dongua.text = "按鼠标重新开始";

             _root.onMouseDown = function() {

                      _root.init();

             };

    }

};

这段代码非常简单,却实现了非常好玩的功能。它在以(200200)为中心的位置处递归十字交叉线,从而将一个256宽的区域分成了1024块。在这段代码中cc1cc2分别代表一种颜色值,其中cc1左移6位就是将纯粹的蓝色变成蓝、绿相混合的颜色,而cc2则是将纯粹的蓝色变成了红色,然后这两个基本色值在后面再进行运算,从而生成各种随机的颜色。Table存放的内容虽然看上去像个一维数组,但是实际上它相当于一种结构,包含了一个新的十字架线所应该有的属性内容:

x:表示这个十字架中心点的x坐标

y:表示这个十字架中心点的y坐标

a:表示这个十字架的宽度

c1:表示十字架的第一色

c2:表示十字架的第二色

c3:表示十字架的第三色

c4:表示十字架的第四色

而这些内容就相当于一个画线的区域,有了这些属性值,就可以在这个区域内正确地画出十字架了。这些属性虽然也可以通过二维数组来完成,但是在二维数组中由于没有属性名,只有编号,故程序的可读性将大大降低。这段代码中通过table.shift()语句从队列的最前面取出一个最老的内容来画线,通过程序后面部分的push语句入栈,使它每次将4个等待画线的区域入栈,也就是说画1个存4个!如图3-1所示。


3-1

这里通过画一个十字架把区域分成4块,分别是第1区、第2区、第3区、第4区,这几个是同一层次的。而当画到第1区时,又把第1区分成1234四个区,如此反复地画线,反复地分区,直到分区达到1024个才停止。在画线的颜色方面,对角位置的颜色相同,也就是1区与4区,2区与3区颜色相同。

这个算法就像计算机数据结构课程中讲的分层遍历算法,一般来说这种遍历算法都要有一个明确的结束条件。在上面这段程序中很明显可以看出,如果每画一个十字架就增加4个可画区域,则待画区域会越来越多,因此程序设定了当队列中达到1024个待画区域时程序终止。如果程序不设这个终止点,就会死循环直至软件出错退出为止!

最终的运行结果如图3-2所示。

3-2



[] [返回上一页] [打 印] [收 藏]
  [相关文章评论]    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 

  QQ空间4个FLASH时钟..
黑色的个性flash时钟..
QQ空间FLASH模块:天..
QQ空间最新FLASH模板..
QQ空间FLASH模块:对..
QQ空间FLASH模块:经..
Flash Player11月出..
QQ空间周杰伦FLASH播..
3.0空间教程系列:使..
QQ空间FLASH模板:4款..


 
中华隐士黑客联盟
本站超级酷的Flash (不看会后悔的..
免费在线看的电影网站(一)
最新QQ空间4.0全屏版效果图!!
免费获得Q币的最新方法
黑客快速入门(强烈推荐)
不用木马,轻松万能偷盗QQ号码
揭秘远程破解盗窃QQ密码的各种方..
免费二级域名申请
18岁少女欲6000元卖处女身 救患血..
 
防止QQ和QQ币游戏币被盗的办法 12-03
养在深闺人未识:FU_Rootkit 12-03
黑客学堂:什么是社会工程学? 12-03
VB程序实现XP效果的界面 12-03
fport.vbs for XP/2003 12-03
保卫自己网站的胜利果实 12-03
SQL注入建立虚拟目录,免得找Web.. 12-03
搜索型注入的文章 12-03
如何用虚拟机安装Windows Vista系.. 12-03
通杀腾讯QCC所有商品免费拿! 12-03
 
关于本站 网站帮助 广告合作 下载声明 友情连接 网站地图 访客留言 论坛登录
〖中华隐士黑客联盟〗,Copyright © 2006-2010 WwW.Hack86.Com 闽ICP备:06023304号
站长:小质 QQ:771760,软件发布MAIL:Hack086@21cn.com