Flash AS3.0 动画学作—旋转圆柱贴图【原创】

来源:互联网 发布:台州电信网络测速 编辑:程序博客网 时间:2024/06/05 17:07

这是书《Flash ActionScript 3.0高级动画教程》 Keith Peters著,第八章 “Flash10的绘画API”的一个示例—旋转圆柱。本示例中换上自己喜欢的图片(不是自己的图片,若涉及到版权请图片作者告知,本人将另换图片),虽然代码不太好琢磨,但非专业人员换图片、改几个数值还是容易做到的。

示例制作1

代码如下:

package{

       import flash.display.Bitmap;

       import flash.display.Sprite;

       import flash.display.StageAlign;

       import flash.display.TriangleCulling;

       import flash.events.Event;

       [SWF(backgroundColor= "0x000000" ,width= "200",height= "180" )]

      

       public class ImageTube_1 extends Sprite{

              [Embed(source= "image.jpg" )]

              private var ImageClass:Class;

             

              private var vertices:Vector.<Number> = new Vector.<Number>();

              private var indices:Vector.<int> = new Vector.<int>();

              private var uvtData:Vector.<Number> = new Vector.<Number>();

              private var bitmap:Bitmap;

              private var sprite:Sprite;

              private var res:Number = 35;

              private var cols:int = 25; //圆周分辨率

              private var rows:int = 6;

              private var centerZ:int = 200;

              private var focalLength:Number = 250;

              private var radius:Number = 150;

              private var offset:Number = 7.2;

             

              public function ImageTube_1(){

                     sprite = new Sprite();

                     sprite.x = stage.stageWidth/2;

                     sprite.y = stage.stageHeight/2+15;

                     addChild(sprite);

 

                     bitmap= new ImageClass() as Bitmap; //柱体贴图

                     makeTriangles();

                     draw();

                    

                     addEventListener(Event.ENTER_FRAME, onEnterFrame);

              }

             

              private function onEnterFrame(event:Event):void{

                     draw();

              }

              private function draw():void {

                     offset += .01;  //旋转速度

                     vertices.length = 0;

                     uvtData.length = 0;

                     for(var i:int = 0;i < rows;i++){

                            for(var j:int = 0;j < cols;j++){

                                   var angle:Number = Math.PI * 2 / (cols - 1) * j + offset;

                                   var xpos:Number = Math.cos(angle) * radius;

                                   var ypos:Number = (i - rows / 2) * res;

                                   var zpos:Number = Math.sin(angle) * radius;

                                   var scale:Number = focalLength / (focalLength + zpos + centerZ);

                                   vertices.push(xpos * scale, ypos * scale);

                                   uvtData.push(j / (cols - 1), i / (rows - 1));

                                   uvtData.push(scale);

                            }

                     }

                     sprite.graphics.clear();

                     sprite.graphics.beginBitmapFill(bitmap.bitmapData);

                     sprite.graphics.drawTriangles(vertices, indices, uvtData, TriangleCulling.NEGATIVE);

                     sprite.graphics.endFill();

                     sprite.graphics.lineStyle(0, 0, .5);

              }

              private function makeTriangles():void{

                     for(var i:int = 0;i < rows;i++){

                            for(var j:int = 0;j < cols;j++){

                                   if(i < rows - 1 && j < cols - 1){

                                          indices.push(i * cols + j,i * cols + j + 1,(i + 1) * cols + j);

                                          indices.push(i * cols + j + 1,(i + 1) * cols + j + 1, (i + 1) * cols + j);

                                   }

                            }

                     }

              }

       }

}

 图片 image.jpg

Flash AS3.0 动画学作—贴图旋转圆柱 - 朽木秃翁 -

 效果:

Flash AS3.0 动画学作—贴图旋转圆柱 - 朽木秃翁 -
 
  示例在 Flash IDE 5.5 中实现

示例制作2

 图片image.jpg (这个图片是自己弄的)
Flash AS3.0 动画学作—贴图旋转圆柱 - 朽木秃翁 -

 效果:

Flash AS3.0 动画学作—贴图旋转圆柱 - 朽木秃翁 -

 代码:略。

原创粉丝点击