加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:58:19 所属栏目:百科 来源:网络整理
导读:这是书《Flash ActionScript 3.0高级动画教程》 Keith Peters著,第八章 “Flash10的绘画API”的一个示例— 旋转圆柱 。本示例中换上自己喜欢的图片(不是自己的图片,若涉及到版权请图片作者告知,本人将另换图片),虽然代码不太好琢磨,但非专业人员换图

这是书《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,.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 IDE 5.5 中实现

示例制作2

?图片 image.jpg ?(这个图片是自己弄的)

?代码:略。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读