Flash螺旋效果 .

来源:互联网 发布:php解析xml 编辑:程序博客网 时间:2024/05/17 03:51

 

先来看看图片讲解的公式

 

 

 

 

数学公式:

X=cosA*R;

y=sinA *R;

Z+=H;

 

转化为屏幕投影的公式:

X=cosA*R;

Z=sinA *R;

Y+=H;


以下是源码(可调整参数变量,实现不同的视觉效果):

package  {import flash.display.MovieClip;import flash.events.*;import flash.geom.PerspectiveProjection;[SWF(width = "700", height = "480", frameRate = "25")];/** * ... * @author .....Li灬Star      * @contact...QQ:168527720      */public class LuoXuan extends MovieClip{private var pointNum:int = 50; //螺旋点的数目private var rotationNum:int = 3; //螺旋的圈数private var anglePer:Number; //旋转的弧度private var radius:Number = 200; //半径private var _height:Number = 0; //高度private var imgArr:Array = new Array();private var container:MovieClip = new MovieClip();public function LuoXuan() {    init();}private function init():void {    root.transform.perspectiveProjection.fieldOfView = 50; //初始化透视角度this.addChild(container);container.x = stage.stageWidth / 2;container.y = stage.stageHeight / 2 - 500;container.z = 1000;setObject3D();}private function setObject3D():void {    anglePer = ((2 * Math.PI) * rotationNum) / pointNum;for (var i:int = 0; i < pointNum; i++ ) {    var img:Image = new Image();imgArr.push(img);container.addChild(img);img.x = Math.cos(anglePer * i) * radius;img.z = Math.sin(anglePer * i) * radius;img.y = _height += 30; //每张图片的高度递增30img.rotationY = ( -i * anglePer) * (180 / Math.PI) + 90; //偏移角度,弧度转换为度img.addEventListener(Event.ENTER_FRAME, enterFrameHandler);}}private function enterFrameHandler(e:Event):void {    container.rotationY+=0.01;              sortZ(); //Z轴排序}private function sortZ():void {    imgArr.sortOn("z", Array.CASEINSENSITIVE | Array.NUMERIC);for (var i:int = 0; i < imgArr.length; i++) {    var imgCopy:Image = imgArr[i];container.setChildIndex(imgCopy, i);}}}}


 

原创粉丝点击