这里以《神仙道》中某一人物资源为例子,它的每一个动作都经过了处理,以中心点为基准点(这样就不需要程序来控制偏移量了,否则程序要改变bitmapData时还需要改变bitmap的坐标)。

as3解析人物动作序列图

一个跑动的动作它细分为20张图片,每一张图片它的大小为:1900 / 20 = 95px;

1、加载资源

as3解析人物动作序列图

2、分解动作

true, 0);
bmd.copyPixels(bmpData, rectangle, pt);

rectangle.x += rectangle.width;

_actionList.push(bmd);
}
}

3、播放动作(可使用enterframe或者timer进行处理)

if (_bmd.x > stage.stageWidth || _bmd.x < 0)
{
_moveStep *= -1;
_bmd.scaleX *= -1;
}

}
}

上面_currFrame % 1,这里可以注释掉,之所有留着的原因是因为有些动作(比如“闪避”)它每一步播放的间隔帧数可能不太一样(一般是通过配置来确定)。

 

最后上面示例代码运行的效果如下,来回跑:

as3解析人物动作序列图

as3解析人物动作序列图

 

这只是一个demo,提供一个思路,具体到游戏产品中,所有的行走、打坐、坐骑..是通过一个全局的管理器(比如EnterFrame处理器)来控制的。

fla和swf文件打包上传到百度云,压缩包的下载地址>>   (注:我使用的flash版本是cs5.5,如果使用低版本的flash是打不开源文件的)

 

如果动作序列图不是上面这样,它是以左顶点为基准来进行动作处理的,那么就需要配置各种偏移量了,比如下面这个:

as3解析人物动作序列图

这个只是我从XML配置文件里截取的某一个动作的配置。配置文件里面其实还有每一张序列图之间间隔的帧数,类似下面的配置

as3解析人物动作序列图

18表示,该动作由18张序列图组成,i里面就是各个序列图执行时的间隔帧数,上面的是2(1/2 <=> 序列索引/间隔帧数)

 

两种的处理方法呢,差不了太多,主要是由美术那边渲染动作来决定的,如果都是以中心点来渲就没有这个问题,如果连续不太规则的就需要使用配置来说明,每一张序列图它的偏移量,宽和高。

相关文章:

  • 2021-09-06
  • 2022-02-16
  • 2022-01-23
  • 2021-09-22
  • 2022-12-23
  • 2021-09-10
  • 2022-01-24
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案