
[代码整理]单个图片角色动作化处理 as2 mygamemylove(2008-5-6 11:42:00) |
|
| 发表时间:2008-6-10 15:37:00 单个图片角色动作化处理 as2 先看效果: 网站改版了,所有源文件请到 QQ群:451231623 共享中下载代码: //flash原创代码 //尽在自娱自乐 www.MyGameMyLove.com //单个图片角色动作化处理 as2.0 //在网上看关于这方面的文章:用的都是BitmapData类,来对图片进行切割。个人觉得没有那么麻烦。而且,有时候我们可能会把游戏的素村做成矢量的。来减小flash的体积。 //以下是个人的看法。 //还好flash8给我们提供了:MovieClip.cacheAsBitmap 属性,把矢量图缓存成位图。我可以查查帮助: //提到:最好将 cacheAsBitmap 属性与主要具有静态内容且不频繁缩放和旋转的影片剪辑一起使用。对于这样的影片剪辑,在转换影片剪辑时(更改其 x 和 y 位置时),cacheAsBitmap 可以提高性能。 //这样我们在作单片人物动作,只需把所有动作用矢量的形式,放入一个mc中,用行列排好。 //用程序来进行控制:在其上放上一个电影符号来遮蔽,显示当前一个格的动画。 //本实例的素材用的是位图。 /*运行原理 新建一个空的电影符号:“mc_TableMovie”作为该动画的容器,将图片动画,导入库中。加上连接符号。这里我设的为"1" 然后设置一个TableMovie动画对象给mc_TableMovie ,对象会自动在“mc_TableMovie”中生成两个mcImg:存放动画图片,mcMask:用于遮蔽的电影符号. 在_root.onEnterFrame,来做循环播放 */ _root.createEmptyMovieClip("mc_TableMovie", _root.getNextHighestDepth()); mc_TableMovie._x = 28; mc_TableMovie._y = 20; //mc_TableMovie.attachMovie("1","mcImg",mc.getNextHighestDepth()); //mc容器,link编号 //starX,starY图片中的动画元素开始的坐标 //hang,lie:行,列 //W,H:宽,高 //movieType 0 循环显示列//目前只作了0类型 1 循环显示所有 var obj_mc_TableMovie:TableMovie = new TableMovie(mc_TableMovie, "1", 0, 0, 4, 4, 63, 93, 0, 1); obj_mc_TableMovie.setHang(3); //按键 var numFX:Number = 1; var DISTANCE = 5; // _root.onEnterFrame = function() { obj_mc_TableMovie.go(); //就这个图片而言,每行代码一个方向的状态。 obj_mc_TableMovie.setHang(numFX); }; //key //键盘检测/////////////// var keyListener_obj:Object = new Object(); keyListener_obj.onKeyDown = function() { switch (Key.getCode()) { case Key.SPACE : trace("space"); break; case Key.LEFT : numFX = 1; break; case Key.UP : numFX = 3; break; case Key.RIGHT : numFX = 2; break; case Key.DOWN : numFX = 0; break; } }; Key.addListener(keyListener_obj); ///////////////////TableMovie类 class TableMovie { public var mc:MovieClip; // public var moiveSD:Number; private var moiveSD_i = 1; // private var mcImg:MovieClip; private var mcMask:MovieClip; // private var starX:Number; private var starY:Number; private var hang:Number; private var lie:Number; private var W:Number; private var H:Number; private var EW:Number; private var EH:Number; //当前 public var NX:Number; public var NY:Number; private var movieType:Number; // //mc容器,link编号 //starX,starY图片中的动画元素开始的坐标 //hang,lie:行,列 //W,H:宽,高 //movieType 0 循环显示列//目前只作了0 1 循环显示所有 //当前fps的倍数移动moiveSD function TableMovie(mc:MovieClip, linkId:String, starX:Number, starY:Number, hang:Number, lie:Number, W:Number, H:Number, movieType:Number, moiveSD:Number) { this.mc = mc; this.moiveSD = moiveSD; // NX = 0; NY = 0; // this.starX = starX; this.starY = starY; this.hang = hang; this.lie = lie; this.W = W; this.H = H; this.movieType = movieType; // this.EW = W/lie; this.EH = H/hang; // mcImg = mc.attachMovie(linkId, "mcImg", mc.getNextHighestDepth()); // mcMask = mc.createEmptyMovieClip("mcMask", mc.getNextHighestDepth()); mcMask.beginFill(0xFF00FF, 100); mcMask.lineStyle(0, 0xFF00FF, 100); mcMask.moveTo(0, 0); mcMask.lineTo(EW, 0); mcMask.lineTo(EW, EH); mcMask.lineTo(0, EH); mcMask.lineTo(0, 0); mcMask.endFill(); // mcImg.setMask(mcMask); } function go() { if (moiveSD_i++>moiveSD) { moiveSD_i = 1; // if (movieType == 0) { NX++; if (NX>=lie) { NX = 0; } setHangLie(); } else if (movieType == 1) { //没有作 } else { trace("类型指定错误!"); } } } //end go function setHangLie() { mcImg._x = -(NX*EW); mcImg._y = -(NY*EH); } function setHang(numHang:Number) { if (numHang<0 || numHang>hang) { NY = hang; return 0; } NY = numHang; } } //// |
| 2008-6-10 17:28:00 | |
| feifei 注册时间:2008-3-12 11:17:00 |
不错!
|
| 2008-9-16 8:04:00 | |
| luo504 注册时间:2008-9-16 7:55:00 |
顶了,真的很好 |

