AS30算法大全.docx
- 文档编号:24004216
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:178
- 大小:87.61KB
AS30算法大全.docx
《AS30算法大全.docx》由会员分享,可在线阅读,更多相关《AS30算法大全.docx(178页珍藏版)》请在冰豆网上搜索。
AS30算法大全
[AS功能代码教程15]点间距离公式[FL基础理论大师]
■[Flash基础理论课16]矩阵革命[双重循环]
■[AS功能代码教程14]鱼眼放大镜[FL基础理论大师]
■[AS功能代码教程13]贪吃蛇游戏制作[FL基础理论大师]
■[Flash基础理论课15]绚酷鼠标[目标移动]
■[Flash基础理论课14]制作Loading[Loading]
■[杂谈四]JavaScript就这么回事[二次编辑贴]
■[AS功能代码教程12]填色游戏[FL基础理论大师]
■[Flash基础理论课13]FL记事本[SharedObject]
■[杂谈四]AS代码优化技巧[综合贴]
■[AS功能代码教程11]图片转场效果[FL基础理论大师]
■[Flash基础理论课12]倒计时系统[getTime]
■[杂谈四]程序员应该学C语言的十个理由
■[AS功能代码教程10]数据结构排序算法[FL基础理论大师]
■[Flash基础理论课11]AS文本计算器[文本类]
■[AS功能代码教程09]点阵字效果[FL基础理论大师]
■[AS功能代码教程08]BitmapData动态效果[FL基础理论大师]
■[Flash基础理论课10]缓动效果[Tween类]
■[杂谈三]微软Silverlight和Flash短兵相接
■[AS功能代码教程07]百变图[FL基础理论大师]
■[AS功能代码教程06]AS绘图总结及补充[FL基础理论大师]
■[Flash基础理论课09]满天星及变幻线[MC.onEnterFrame]
■[Flash基础理论课08]旋转花朵[for...in]
■[游戏赏玩]吸泡泡
■[Flash基础理论课07]制作控制滑块[startDrag]
■[杂谈二]人类的15个欲望与游戏设计
■[AS功能代码教程04]进阶三角函数及应用[FL基础理论大师]
■[Flash基础理论课06]制作移动角色[Key类]
■[Flash基础理论课05]制作摇奖盘[onEnterFrame]
■[AS功能代码教程05]打字机效果及字符串概念[FL基础理论大师]
■[AS功能代码教程03]基础三角函数及应用[FL基础理论大师]
■[AS功能代码教程02]数字魔方及数组概念[FL基础理论大师]
■[AS功能代码教程01]通用延迟代码及FPS概念[FL基理大师原创]
■[Flash基础理论课04]制作音乐播放器[Sound类]
■[Flash基础理论课03]制作简易涂鸦板[画线指令]
■[Flash基础理论课02]制作个性鼠标[updateAfterEvent]
■[Flash基础理论课01]制作时钟[Date类]
■[杂谈一]什么是真正的Flash高手?
希望朋友们多提保贵议建,您的题问和课题将成文我前进的最大动力。
很不错的,我把内容复制如下。
感谢分享:
1。
[杂谈五]成为编程高手的八大奥秘
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们
比起来,还差得太远。
世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1.扎实的基础
数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握它们,很难写出高水平的程序。
程序人
人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。
不要一开
始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
因此多读一些计算机基础理论方面的书籍
是非常有必要的。
2.丰富的想像力
不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。
丰富的想像力
是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。
开阔的思维对程序员来
说很重要。
3.最简单的是最好的
这也许是所有科学都遵循的一条准则,复杂的质能转换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:
E=mc2。
简单的方法更容易被人理解,更容易实现,也更容易维护。
遇到问题时要优先考虑最简单的方案,只有简单方案
不能满足要求时再考虑复杂的方案。
4.不钻牛角尖
当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。
当我遇到难题的时候会去
玩游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。
当重新开始工
作的时候,我会发现那些难题现在竟然可以迎刃而解。
5.对答案的渴求
人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。
只要你坚定
信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6.多与别人交流
三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。
多上上网,看看别人对同一问题的看
法,会给你很大的启发。
7.良好的编程风格
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。
大家都知道如何排除代码中错误,却往往
忽视了对注释的排错。
注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你
的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8.韧性和毅力
这也许是“高手”和一般程序员最大的区别。
高手们并不是天才,他们是在无数个日日夜夜中磨炼出来的。
成功能给
我们带来无比的喜悦,但过程却是无比的枯燥乏味。
你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然
后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
2。
[AS功能代码教程15]点间距离公式[FL基础理论大师]
两点间距离
Math.sqrt(Math.pow((p1._x-p2._x),2)+Math.pow((p1._y-p2._y),2))
由这个公式可以推导出某点与原点距离公式:
因为原点坐标为(0,0),所以公式变形如下
Math.sqrt(p1._x*p1._x+p1._y*p1._y)
下面我们就来运用这两个公式来制作一些效果
实例一:
旋转指针
思路:
求一个夹角的θ方法很多如:
distance.jpg
正弦函数sinθ=y/r
余弦函数cosθ=x/r
正切函数tanθ=y/x
余切函数cotθ=x/y
正割函数secθ=r/x
余割函数cscθ=r/y
这些三角函数都可以求出同一个夹角θ
在本实例中只使用atan和acos而没有使用其它三角函数是因为他们的返回值都是一个任意数字,而其它函数的返回值
均为限定的数字。
步骤一:
绘制一指针,保存为影片剪辑,注册点在指针根部,实例名为"pointer"
步骤二:
在第一帧加入AS代码(正切函数):
pointer.onMouseMove=function(){
vardx=_xmouse-this._x;
vardy=_ymouse-this._y;
vartheta=Math.atan2(dy,dx);
//使用正切函数求出夹角
this._rotation=theta/Math.PI*180;
//将弧度转换为角度
};
在第一帧加入AS代码(反余弦函数):
pointer.onMouseMove=function(){
vardx=_xmouse-this._x;
vardy=_ymouse-this._y;
varr=Math.sqrt(dx*dx+dy*dy);
//r为点与鼠标的直线距离,这里也是斜边r
vartheta=Math.acos(dx/r)*Math.abs(dy)/dy;
//使用反余弦函数求出夹角
this._rotation=theta/Math.PI*180;
//将弧度转换为角度
};
实例二:
泡泡效果
思路:
通过判断鼠标的移动距离改变复制出泡泡的大小,移动得越远,泡泡越大
步骤一:
绘制泡泡,保存为影片剪辑,连接—>导出—>标志符"bubble"
步骤二:
在第一帧加入AS代码:
varn:
Number=0;
varold_x,old_y;
//这两个全局变量用于存储前一次的鼠标位置
_root.onMouseMove=function(){
vardx=_xmouse-old_x;
vardy=_ymouse-old_y;
vardistance=Math.sqrt(dx*dx+dy*dy);
//求出本次鼠标位置和前一次鼠标位置的距离
varp=attachMovie("bubble","b"+n,n);
p._x=_xmouse;
p._y=_ymouse;
p._width=p._height=distance;
//用得出的距离为泡泡设置尺寸
p.onEnterFrame=function(){
if(this._alpha>0){
this._xscale=this._yscale+=5;
this._alpha-=5;
//做一个泡泡变大消失的效果
}else{
deletethis.onEnterFrame;
removeMovieClip(this);
//泡泡看不见后,别忘了删除他的影片和函数,否则会卡哟
}
};
old_x=_xmouse;
old_y=_ymouse;
//保存本次鼠标位置作为前一次鼠标的位置
n++;
};
实例三:
辐射点效果
思路:
1.把点以行列的形式平均分配到舞台上
2.用点间距离公式,判断每个点与鼠标的距离
3.缩放值=距离-120
4.当120<距离<220时,则缩放值开始变小[100~0],表现为向内开始变小
5.当距离<120时,则缩放值小于0,表现为向内开始变大,开始走向负数
6.当距离为0时,则缩放值为-120,表现为鼠标中心位置上较大的那些圆
步骤一:
绘制一黑点,尺寸为20*20,保存为影片剪辑,
注册点在中心,连接—>导出—>标志符"dot"
步骤二:
varsize=20;
//黑点的大小
varColum=Math.floor(Stage.width/size);
varRow=Math.floor(Stage.height/size);
for(vari=0;i for(varj=0;j varp=_root.attachMovie("dot","d"+(i*Row+j),i*Row+j); p._x=(size/2)+i*size; p._y=(size/2)+j*size; //以行列的形式把点平均分配到舞台上 p.onMouseMove=function(){ vardx=this._x-_xmouse; vardy=this._y-_ymouse; vardistance=Math.sqrt(dx*dx+dy*dy); vard=distance-120; //如果距离大于220,则不进行缩放,距离小于220则为进行缩放 if(d>100){ d=100; } //或d=d>100? 100: d; this._xscale=this._yscale=d; }; } } 实例四: 狡猾的小球 先复习一下圆的参数方程: x坐标=R*cosθ+m;y坐标=R*sinθ+n 根据正弦函数sinθ=y/r和余弦函数cosθ=x/r推出圆的参数方程为: x坐标=R*(x/r)+m;y坐标=R*(y/r)+n其中(m,n)为原点坐标。 思路: 1.使用变型的圆参数方程: x=R*(x/r)+m;y=R*(y/r)+n 2.为了让小球躲得更远可以加入新圆心坐标dif_x,dif_y 3.得出球的新位置=球的初始位置—(圆心位置+圆上的位置) 步骤一: 绘制一黑点,尺寸为20*20,保存为影片剪辑, 注册点在中心,连接—>导出—>标志符"dot" 步骤二: 在第一帧加入AS代码: varsize=30; //比点的尺寸大出10像素作为行列间距 varColum=Math.floor(Stage.width/size)-2; varRow=Math.floor(Stage.height/size)-2; //行数列数减2,目的是在周围空出2行 varMax=1000; //反映及影响圆半径的常量 for(vari=0;i for(varj=0;j varp=_root.attachMovie("dot","d"+(i*Row+j),i*Row+j); p._x=p.oldx=20+(size/2)+i*size; p._y=p.oldy=20+(size/2)+j*size; //以行列的形式把点平均分配到舞台上,同时保存初始位置为oldx,oldy p.onEnterFrame=function(){ vardx=_xmouse-this._x; vardy=_ymouse-this._y; varr=Math.sqrt(dx*dx+dy*dy); //r为点与鼠标的直线距离,这里也是斜边r varCircle_x=(dx/r)*Max/r; varCircle_y=(dy/r)*Max/r; //计算出该点在圆上的位置,Max/r为半径,所以r越小半径越大 vardif_x=(this.oldx-this._x)/2; vardif_y=(this.oldy-this._y)/2; //以球的新位置与初始位置之差为新的圆心 this._x=this.oldx-(dif_x+Circle_x); this._y=this.oldy-(dif_y+Circle_y); //得出球的新位置=球的初始位置—(圆心位置+圆上的位置) //之所以减去(圆心位置+圆上的位置): 让小球位置与鼠标位置相反 }; } } 教程到此结束 QQ: 147461195(FL基理大师) 3。 [Flash基础理论课16]矩阵革命[双重循环] 在本次课中我们将介绍两种方法来完成该效果,重点掌握双重循环语句 还要介绍TextField._alpha方法不可用的解决办法 单循环: for(i=0;i<5;i++){ trace("i="+i); } 运行结果如下: i=0 i=1 i=2 i=3 i=4 双重循环: 就是在for循环中再加入一个for循环 for(i){ for(j){} } 下面看一个双重循环的例子 for(i=0;i<5;i++){ for(j=0;j<3;j++){ trace("i="+i+"j="+j); } } 运行结果如下: i=0j=0 i=0j=1 i=0j=2 i=1j=0 i=1j=1 i=1j=2 i=2j=0 i=2j=1 i=2j=2 i=3j=0 i=3j=1 i=3j=2 i=4j=0 i=4j=1 i=4j=2 i=5j=0 i=5j=1 i=5j=2 i=6j=0 i=6j=1 i=6j=2 i=7j=0 i=7j=1 i=7j=2 i=8j=0 i=8j=1 i=8j=2 i=9j=0 i=9j=1 i=9j=2 总结一下可以这样写: 当i=0时,j=0,j=1,j=2 当i=1时,j=0,j=1,j=2 当i=2时,j=0,j=1,j=2 当i=3时,j=0,j=1,j=2 当i=4时,j=0,j=1,j=2 我们再形象地解释一下双重循环的意思: 把for(i=0;i<5;i++){...}i从0到4,循环了5次,就把这五次循环表示为5个人 "小赵","小钱","小孙","小李","小周" 把for(j=0;j<3;j++){...}j从0到2,循环了3次,就把这三次循环表示为3件事 "买菜","买肉","买米" 就相当于: 当i="小赵"时,他要去j="买菜",j="买肉",j="买米" 当i="小钱"时,他要去j="买菜",j="买肉",j="买米" 当i="小孙"时,他要去j="买菜",j="买肉",j="买米" 当i="小李"时,他要去j="买菜",j="买肉",j="买米" 当i="小周"时,他要去j="买菜",j="买肉",j="买米" 本节中将用到的利用双重循环实现行列分配的问题 columrow2.jpg 已知库中有一个链接名为mc的影片剪辑,为一个圆,大小为30,注册点在左上 varsize=30; varColum=Math.floor(Stage.width/size); //根据圆大小,确定横向能容纳多少个圆,就是有多少个列 varRow=Math.floor(Stage.height/size); //根据圆大小,确定纵向能容纳多少个圆,就是有多少个行 for(vari=0;i for(varj=0;j varp=_root.attachMovie("dot","d"+(i*Row+j),i*Row+j); //i*Row+j确保每个影片的新名字和深度都不相同 //这里也可使用getNextHighestDepth() p._x=i*size; p._y=j*size; //设置圆的位置,双循环的意思是: 有Colum行,且每一行中都有Row个列 } } 解释过来就是: 当x坐标=第1列时,分配Row个圆,y坐标从0到Row-1 当x坐标=第2列时,分配Row个圆,y坐标从0到Row-1 当x坐标=第3列时,分配Row个圆,y坐标从0到Row-1 ...... 当x坐标=第Colum-1列时,分配Row个圆,y坐标从0到Row-1 矩阵革命: 制作方法 (一) 思路: 1.制作一个有若干帧的影片剪辑,每一帧都代表一个随机的字母或数字; 2.设置影片文本的大小为30,用舞台大小除以字母大小,确定每行每列能容纳多少文本; 3.每列容纳字符个数为Colum个,共Row列; 4.根据Colum和Row的确定影片的行位置和列位置。 步骤1: columrow2.jpg 制作一个影片剪辑,有若干帧,每帧中一个静态文本框 内容为一个字母或一个数字 字体: Arial,字号: 30,加粗,颜色: 0x00FF00 连接—>导出—>字符"txt" 步骤2: 在第一帧中写入代码 varsize=32; //比文本框大出2个象素,做为行列间距 varColum=Math.floor(Stage.width/size); //按照字符大小,确定每列能容纳多少个字符 varRow=Math.floor(Stage.height/size); //按照字符大小,确定每行能容纳多少个字符 for(vari=0;i for(varj=0;j varp=_root.attachMovie("txt","t"+(i*Row+j),i*Row+j); p._x=i*size; p._y=j*size; //安排每个新字符影片的位置,每一行中都有Row个列 p.onEnterFrame=function(){ this.gotoAndStop(random(this._totalframes)); //每次随机取一帧,实现随机字母或数字 this._alpha=random(100); //随机的设置影片剪辑的透明度 }; } } 在写本节内容时,原本只想用方第二种方法(纯AS编写),但在测试中发现TextField._alpha和TextField._rotation 方法是“无效”的,随后在网络上发现了解决的办法,下面我们先来看一下纯AS编写的部分,然后在看“失效”的解决办 法。 制作方法 (二) 思路: 这次只使用创建TextFiled的方法,而不是再使用影片剪辑中的方法 在第一帧中加入以下代码 vart_f: TextFormat=newTextFormat(); t_f.size=20; t_f.font="Arial"; //设置字体格式 varColum=Math.floor(Stage.width/t_f.size); varRow=Math.floor(Stage.height/t_f.size); for(vari=0;i for(varj=0;j varT=_root.createTextField("txt"+(i*Row+j),i*Row+j,0,0,0,0) //创建文本框 T._x=i*t_f.size; T._y=j*t_f.size; //设置其坐标位置 T.textColor=0x00ff00; T.setNewTextFormat(t_f); T.autoSize=true; T.selectable=false; //T.embedFonts=true; //设置文本框属性 } } _root.onEnterFrame=function(){ for(vari=0;i if(Math.random()<0.5){ this["txt"+i].text=String.fromCharCode(65+random(26)); //随机的字母 }else{ thi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AS30 算法 大全