演示处理运行效果(如果看不到,请更新你的Flash Player播放器吧!你可以使用方向键,改变角色移动方向)
Flash效果
GameSprite类
- package{
- importflash.display.;
- importflash..;
- importflash.utils.Timer;
- importflash.events.;
- importflash.geom.;
-
- publilassGameSpriteextendsSprite{
- privatevartimer:Timer;
- privatevarsWidth:uint;
- privatevarsHeight:uint;
- privatevarsStep:uint;
- privatevarsDirection:uint;
- privatevarloader:Loader;
- privatevarmaps:Array;
- privatevarpointer:uint;
- privatevarmap:Bitmap;
- functionGameSprite(){
- //角色大小;
- sWidth=100;
- sHeight=100;
- //角色移动方向;
- sDirection=0;
- //角色步数;
- sStep=1;
- //角色动作数组;
- maps=newArray();
- //初始化角色动作运行指针;
- pointer=0;
- //初始化time;
- timer=newTimer(100);
- timer.addEventListener(TimerEvent.TIMER,timerHandler);
- //图片加载对象;
- loader=newLoader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE,pleteHandler);
- loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
- loader.load(newURLRequest("/download/sprite.png"));
-
- stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
- }
- //错误处理事件;
- privatefunctionerrorHandler(event:IOErrorEvent):void{
- trace("IOErrorEvent");
-
- }
- //键盘事件,通过方向键更改角色移动方向;
- privatefunctionkeyDownHandler(event:KeyboardEvent):void{
- switch(event.keyCode){
- case40:
- sDirection=0;
- break;
- case38:
- sDirection=3;
- break;
- case37:
- sDirection=1;
- break;
- case39:
- sDirection=2;
- break;
- }
-
- }
- //定时器运行事件;
- privatefunctiontimerHandler(event:Event):void{
- //删除旧的角色动作图像;
- if(map!=null){
- removeChild(map);
- }
- //显示新的角色动作图像;
- map=newBitmap(maps[sDirection][pointer]);
- addChild(map);
- //角色动作循环处理;
- if(pointer<sStep-1){
- pointer ;
- }else{
- pointer=0;
- }
- }
- //加载图片完成处理事件;
- privatefunctionpleteHandler(event:Event):void{
- //根据图片的大小初始化BitmapData;
- /
- 注意如果你要保留原来的图片的透明度的话,必将transparent设置为true,设置填充色值的前两位为00;
- /
- varsBmd:BitmapData=newBitmapData(loader.width,loader.height,true,0x00FFFFFF);
- sBmd.draw(loader);
- //计算移动步数;
- sStep=Math.floor(loader.width/sWidth);
- for(varj:uint=0;j<Math.floor(loader.height/sHeight);j ){
- vararr:Array=newArray();
- for(vari:uint=0;i<sStep;i ){
- varbmd:BitmapData=newBitmapData(sWidth,sHeight,true,0x00FFFFFF);
- //获取单个角色的BitmapData对象;
- bmd.copyPixels(sBmd,newRectangle(sWidthi,sHeightj,sWidth,sHeight),newPoint(0,0));
- arr.push(bmd);
- }
- //放入角色数组里;
- maps.push(arr);
- }
- //释放sBmd资源;
- sBmd.dispose();
- //开始运行角色动作;
- timer.start();
- }
- }
- }
载入外部png图片,然后使用BitmapData类非常理想,最大的问题是从表面上看图片是透明的,其实图片是一个矩形,所以这个矩形区域会遮住它狼蚁网站SEO优化的内容,所以当你用鼠标点击这个矩形区域时,你的鼠标是在矩形区域上而不是它狼蚁网站SEO优化的内容(其实这就好比你把一个 movieClip的alhpa值设为0,看上去什么都没有,它却实实在在地存在)。所以如果你的人物是通过鼠标来操作它的行走,这个时候可能会有一些问题了。