Flash AS3对单个图片进行角色动作化处理

所属分类: 媒体动画 / Flash教程 阅读数: 47
收藏 0 赞 0 分享

大家肯定看过大型游戏一张各个人物动作图片继承在一张位图上的程序吧~现在看看这个!

我今天在蓝色论坛里看到一个有关"BitmapData类"的问题,我觉得用BitmapData类是可以实现里说的C 处理图片功能,再加我好久没写AS3的程序,都快生锈了!就当练练手吧!我查了一下Flash帮助文件,整理一下思路花了中午时间写出下面document类文件;这个功能比较适合做Flash游戏开发了。我加了键盘事件,用来控制角色移动方向。如果在对类代码中使用的类对象不清楚的话,请看Flash帮助文件吧!

提问者提供一个角色动作图片,我也就在就直接用这图片了!

Flash AS3对单个图片进行角色动作化处理

演示处理运行效果(如果看不到,请更新你的Flash Player播放器吧!你可以使用方向键,改变角色移动方向)

Flash效果

GameSprite类:

  1. package{
  2. importflash.display.*;
  3. importflash.net.*;
  4. importflash.utils.Timer;
  5. importflash.events.*;
  6. importflash.geom.*;
  7. publicclassGameSpriteextendsSprite{
  8. privatevartimer:Timer;
  9. privatevarsWidth:uint;
  10. privatevarsHeight:uint;
  11. privatevarsStep:uint;
  12. privatevarsDirection:uint;
  13. privatevarloader:Loader;
  14. privatevarmaps:Array;
  15. privatevarpointer:uint;
  16. privatevarmap:Bitmap;
  17. functionGameSprite(){
  18. //角色大小;
  19. sWidth=100;
  20. sHeight=100;
  21. //角色移动方向;
  22. sDirection=0;
  23. //角色步数;
  24. sStep=1;
  25. //角色动作数组;
  26. maps=newArray();
  27. //初始化角色动作运行指针;
  28. pointer=0;
  29. //初始化time;
  30. timer=newTimer(100);
  31. timer.addEventListener(TimerEvent.TIMER,timerHandler);
  32. //图片加载对象;
  33. loader=newLoader();
  34. loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
  35. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
  36. loader.load(newURLRequest("/download/sprite.png"));
  37. stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
  38. }
  39. //错误处理事件;
  40. privatefunctionerrorHandler(event:IOErrorEvent):void{
  41. trace("IOErrorEvent");
  42. }
  43. //键盘事件,通过方向键更改角色移动方向;
  44. privatefunctionkeyDownHandler(event:KeyboardEvent):void{
  45. switch(event.keyCode){
  46. case40:
  47. sDirection=0;
  48. break;
  49. case38:
  50. sDirection=3;
  51. break;
  52. case37:
  53. sDirection=1;
  54. break;
  55. case39:
  56. sDirection=2;
  57. break;
  58. }
  59. }
  60. //定时器运行事件;
  61. privatefunctiontimerHandler(event:Event):void{
  62. //删除旧的角色动作图像;
  63. if(map!=null){
  64. removeChild(map);
  65. }
  66. //显示新的角色动作图像;
  67. map=newBitmap(maps[sDirection][pointer]);
  68. addChild(map);
  69. //角色动作循环处理;
  70. if(pointer<sStep-1){
  71. pointer ;
  72. }else{
  73. pointer=0;
  74. }
  75. }
  76. //加载图片完成处理事件;
  77. privatefunctioncompleteHandler(event:Event):void{
  78. //根据图片的大小初始化BitmapData;
  79. /*
  80. *注意如果你要保留原来的图片的透明度的话,必将transparent设置为true,同时设置填充色值的前两位为00;
  81. */
  82. varsBmd:BitmapData=newBitmapData(loader.width,loader.height,true,0x00FFFFFF);
  83. sBmd.draw(loader);
  84. //计算移动步数;
  85. sStep=Math.floor(loader.width/sWidth);
  86. for(varj:uint=0;j<Math.floor(loader.height/sHeight);j ){
  87. vararr:Array=newArray();
  88. for(vari:uint=0;i<sStep;i ){
  89. varbmd:BitmapData=newBitmapData(sWidth,sHeight,true,0x00FFFFFF);
  90. //获取单个角色的BitmapData对象;
  91. bmd.copyPixels(sBmd,newRectangle(sWidth*i,sHeight*j,sWidth,sHeight),newPoint(0,0));
  92. arr.push(bmd);
  93. }
  94. //放入角色数组里;
  95. maps.push(arr);
  96. }
  97. //释放sBmd资源;
  98. sBmd.dispose();
  99. //开始运行角色动作;
  100. timer.start();
  101. }
  102. }
  103. }

载入外部png图片,然后使用BitmapData类非常理想,最大的问题是:从表面上看图片是透明的,但是其实图片是一个矩形,所以这个矩形区域会遮住它下面的内容,所以当你用鼠标点击这个矩形区域时,你的鼠标是在矩形区域上而不是它下面的内容(其实这就好比你把一个 movieClip的alhpa值设为0,看上去什么都没有,但是它却实实在在地存在)。所以如果你的人物是通过鼠标来操作它的行走,这个时候可能会有一些问题了。
更多精彩内容其他人还在看

Flash cs3绘制人物高级行走动画教程

本教程向大家介绍Flash cs3绘制人物高级行走动画效果,教程难度不是很大,绘制方法及过程介绍的也非常详细,教程很实用,转发过来,希望大家喜欢
收藏 0 赞 0 分享

Flash CS4来制作漂亮的气泡动画教程

本教程向脚本之家的朋友介绍用Flash CS4来制作漂亮的气泡动画,制作出来气泡真的很好看,制作效果是采用代码形式实现,觉得很不错,转发过来,感兴趣的朋友可以一起来学习
收藏 0 赞 0 分享

flash基础教程:帧、关键帧、空白帧概念及区别介绍

动画的产生是帧来实现的,那什么是帧?帧、关键帧和空白帧之间又有什么区别?本文就为大家介绍一下三者之间的关系
收藏 0 赞 0 分享

Flash教程:动画背景的绘制方法之透视篇(给新手)

Flash动画在网络上的广泛传播,已经成为上网一族喜闻乐见的一种艺术形式。动画背景的绘制方法有很多,也有很多表现方法。这里将结合透视学的基础知识向大家简单的介绍一下动画背景的绘制。
收藏 0 赞 0 分享

Flash AS入门教程:Flash AS3.0制作有年份有日期的时钟

本教程是向大家介绍利用Flash AS3.0制作有年份有日期的时钟,虽然制作时钟老套了点,但它确可以较全面地应用到时间日期和间隔等知识,仍不失为较好的入门练习,转发给大家,希望对大家有所帮助
收藏 0 赞 0 分享

Flash相册制作大师具体该如何使用 Flash相册制作大师使用教程

在本文中我们将会看到的是Flash相册制作大师的具体使用的方法
收藏 0 赞 0 分享

flash基础教程:混色器面板图文介绍

混色器面板是Flash中用于色彩处理的一个重要面板,熟练地使用该面板,可以帮助用户快速地完成色彩的填充,编辑出色彩丰富的图形。本教程为大家详细介绍一下混色器面板,希望对大家有所帮助
收藏 0 赞 0 分享

25个绝对让你应接不暇的Flash网站创意

在Web设计过程中,运用成熟的Flash技术可以把你任意想到的idea表现到产品页面中。这里为你整理发现了25个绝对让你应接不暇的 Flash网站创意,更好地体现网站的互动应用,同时可以让你大饱眼福,一起来欣赏吧
收藏 0 赞 0 分享

教你用Flash制作非常酷的二进制时钟动画

今天在这个教程中我们将学习用Flash做一个不同寻常的,但非常酷的时钟:一个二进制时钟,中间用到了代码,但介绍地很详细,相信很值得大家学习
收藏 0 赞 0 分享

Flash动画特效制作技巧:制作超酷的文字炸开动画效果

本教程向大家介绍Flash动画特效制作技巧,本实例是制作文字炸开的动画效果,制作效果非常酷,制作过程也比较简单,喜欢的朋友可以过来学习一下这种制作方法
收藏 0 赞 0 分享
查看更多