Flash教程 3DMAX教程
返回首页
当前位置: 主页 > 媒体动画 > Flash教程 >

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

时间:2009-04-05 02:10来源:闪吧个人空间 xiao1xiao 作者: 点击:
Flash AS3对单个图片进行角色动作化处理,Flash AS3对单个图片进行角色动作化处理

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

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

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

 

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



GameSprite类:

  1.  package {   
  2.     import flash.display.*;   
  3.     import flash.net.*;   
  4.     import flash.utils.Timer;   
  5.     import flash.events.*;   
  6.     import flash.geom.*;   
  7.   
  8.     public class GameSprite extends Sprite {   
  9.         private var timer:Timer;   
  10.         private var sWidth:uint;   
  11.         private var sHeight:uint;   
  12.         private var sStep:uint;   
  13.         private var sDirection:uint;   
  14.         private var loader:Loader;   
  15.         private var maps:Array;   
  16.         private var pointer:uint;   
  17.         private var map:Bitmap;   
  18.         function GameSprite() {   
  19.             //角色大小;   
  20.             sWidth = 100;   
  21.             sHeight = 100;   
  22.             //角色移动方向;   
  23.             sDirection = 0;   
  24.             //角色步数;   
  25.             sStep = 1;   
  26.             //角色动作数组;   
  27.             maps = new Array();   
  28.             //初始化角色动作运行指针;   
  29.             pointer = 0;   
  30.             //初始化time;   
  31.             timer = new Timer(100);   
  32.             timer.addEventListener(TimerEvent.TIMER, timerHandler);   
  33.             //图片加载对象;   
  34.             loader = new Loader();   
  35.             loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);   
  36.             loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);   
  37.             loader.load(new URLRequest("/download/sprite.png"));   
  38.   
  39.             stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);   
  40.         }   
  41.         //错误处理事件;   
  42.         private function errorHandler(event:IOErrorEvent):void {   
  43.             trace("IOErrorEvent");   
  44.   
  45.         }   
  46.         //键盘事件,通过方向键更改角色移动方向;   
  47.         private function keyDownHandler(event:KeyboardEvent):void {   
  48.             switch (event.keyCode) {   
  49.                 case 40 :   
  50.                     sDirection = 0;   
  51.                     break;   
  52.                 case 38 :   
  53.                     sDirection = 3;   
  54.                     break;   
  55.                 case 37 :   
  56.                     sDirection = 1;   
  57.                     break;   
  58.                 case 39 :   
  59.                     sDirection = 2;   
  60.                     break;   
  61.             }   
  62.   
  63.         }   
  64.         //定时器运行事件;   
  65.         private function timerHandler(event:Event):void {   
  66.             //删除旧的角色动作图像;   
  67.             if (map != null) {   
  68.                 removeChild(map);   
  69.             }   
  70.             //显示新的角色动作图像;   
  71.             map = new Bitmap(maps[sDirection][pointer]);   
  72.             addChild(map);   
  73.             //角色动作循环处理;   
  74.             if (pointer < sStep-1) {   
  75.                 pointer ++;   
  76.             } else {   
  77.                 pointer = 0;   
  78.             }   
  79.         }   
  80.         //加载图片完成处理事件;   
  81.         private function completeHandler(event:Event):void {   
  82.             //根据图片的大小初始化BitmapData;   
  83.             /*  
  84. 爱设计教学网(www.2sheji.com)——为您所需,替您所想!
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线----------------------------
    最新评论 查看所有评论
    发表评论 查看所有评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 密码: 验证码:
    推荐内容