用中点位移法绘制山脉的一个粗糙AS3演示
2009-05-26 16:33
190 查看
代码
import flash.geom.Point; var MINI = 0.5;//MINI指的是每个中点的振幅缩小速率 var W = stage.stageWidth; var H = stage.stageHeight; var iter:int = 5;//迭代次数,值越大,山脉越平滑 var left:Point,right:Point; left = new Point(0, H-1); right = new Point(W-1, H-1); var hill:Sprite = new Sprite(); addChild(hill); stage.addEventListener(MouseEvent.CLICK, myClick); function myClick(e:MouseEvent):void{ //Mid-point Displacement 中点位移法 //每次点击就用一种随机的颜色来画山脉 hill.graphics.lineStyle(2,Math.random()*256<<16|Math.random()*256<<8|Math.random()*256); MD(left, right, 0); } function MD(l:Point, r:Point, i:int):void{ if(i >= iter){ hill.graphics.moveTo(l.x, l.y); hill.graphics.lineTo(r.x, r.y); return; }else{ var mx:Number = (l.x + r.x)/2; var my:Number = (l.y + r.y)/2 + H*Math.pow(MINI,i)*myRand(); if (0 > my)trace(my); var mp:Point = new Point(mx, my); MD(l, mp, i+1); MD(mp, r, i+1); } } //生成一个从-1到1的随机数 function myRand():Number{ var positive:Boolean = Math.random() > 0.5 ? true:false; if(positive)return Math.random(); else return 0 - Math.random(); }
相关文章推荐
- As3 通过绘制多张位图合并成一个超大的位图
- 本例演示如何在数据周围绘制一个带标题的框。
- Android UI 之居间绘制文本内容的正确方法——实现自定义一个TextView
- 一个演示多线程操作及同步的C#程序
- 很不错的一个汉诺塔演示动画(Java版本)
- 听说Google的在线演示功能上线了,作为一个Gfans自然要去捧捧场
- 黑马程序员-我的第十篇学习日记:OC中点语法,@property和@synthesize,完整创建一个可用对象
- Android快乐贪吃蛇游戏实战项目开发教程-03虚拟方向键(二)绘制一个三角形
- Visual Paradigm - 一个用于绘制UML的java实现的一个工具软件
- 一个很简单的demo来演示一个账号只能同时被一个人使用(Java实现)
- 一个强健 实用的asp+ajax二级联动菜单(有演示和附源程序打包下载)
- 最近这周写的一个粗糙的仓库管理系统
- openfire:openfire插件开发案例——testpulg.jar插件(功能:演示一个插件的完整开发过程)
- 一个简单的例子演示:模仿微博里面的通过浏览器的滚动条来动态加载数据
- 一个绘制眉毛形状的函数
- 第一弹 创建窗体,并绘制一个三角形一个矩形
- 这是一个录音实时录制绘制波形,最后转成整个波形的例子。
- 采用CRectTracker类来实现:点击一个控件时,为其绘制边框
- OpenGL 绘制一个三角形带(Triangle Strip)
- EXTJS4.0绘制一个上传的文件的界面