📄 gamesprite.as
字号:
package
{
/*
oliwen
*/
import flash.display.*;
import flash.net.*;
import flash.utils.Timer;
import flash.events.*;
import flash.geom.*;
import flash.text.TextField;
import Load;
public class GameSprite extends Load
{
private var timer:Timer;
private var sWidth:uint;
private var sHeight:uint;
private var sStep:uint;
private var sDirection:uint;
private var m_PersonRun:Array;
private var pointer:uint;
private var PersonBit:Bitmap;
private var m_RowNum:uint;
private var m_RankNum:uint;
private var m_ActNum:uint = 0;
private var sn:Boolean=false;
private var m_personSprite:Sprite = new Sprite();
private var m_personName:TextField = new TextField;
function GameSprite()
{
//图片加载对象;
url_="a1.png";
super();
StartRun();
}
public function StartRun():void
{
m_personName.text = "大王";
m_personName.x=15;
m_personName.y=-20;
this.addChild(m_personName);
this.addChild(m_personSprite);
//行 列动作个数
m_RowNum=7;
m_RankNum=6;
//角色移动方向;
sDirection=0;
//角色步数;
sStep=1;
//角色动作数组;
m_PersonRun=new Array ;
//初始化角色动作运行指针;
pointer=1;
//初始化time;
timer=new Timer(100);
timer.addEventListener(TimerEvent.TIMER,timerHandler);
this.addEventListener(listened, completeHandler);
}
//键盘事件,通过方向键更改角色移动方向;
private function keyDownHandler(event:KeyboardEvent):void
{
//m_ActNum 横排第几个动作 sDirection 竖派第几个动作
//按数字键测试
switch (event.keyCode)
{
case 97 :
trace("1");
timer.start()
sDirection=0;
sn=true;
m_personSprite.scaleX = 1;
m_personSprite.x = 0;
break;
case 98 :
trace("2");
timer.start()
sDirection=1;
sn=true;
m_personSprite.scaleX = 1;
m_personSprite.x = 0;
break;
case 99 :
trace("3");
timer.start()
sDirection=2;
sn=true;
m_personSprite.scaleX = 1;
m_personSprite.x = 0;
break;
case 100 :
trace("4");
timer.start()
sDirection=3;
sn=true;
m_personSprite.scaleX = 1;
m_personSprite.x = 0;
break;
case 101 :
trace("5");
timer.start()
sDirection=4;
sn=true;
m_personSprite.scaleX = 1;
m_personSprite.x = 0;
break;
case 102 :
trace("6");
timer.start()
sDirection=3;
m_personSprite.scaleX = -1;
m_personSprite.x = m_personSprite.width;
sn=true
break;
case 103 :
trace("7");
timer.start()
sDirection=2;
m_personSprite.scaleX = -1;
m_personSprite.x = m_personSprite.width;
sn=true;
break;
case 104 :
trace("8");
timer.start()
sDirection=1;
m_personSprite.scaleX = -1;
m_personSprite.x = m_personSprite.width;
sn=true;
break;
case 105 :
trace("9");
timer.start()
m_ActNum =1;
sDirection=5;
sn=false;
break;
case 120 :
trace("10");
sn=false;
break;
}
}
//定时器运行事件;
private function timerHandler(event:Event):void
{
//删除旧的角色动作图像;
if (PersonBit != null)
{
m_personSprite.removeChild(PersonBit);
}
//显示新的角色动作图像;
if (sn==false)
{
PersonBit=new Bitmap(m_PersonRun[sDirection][m_ActNum]);
timer.stop()
} else
{
PersonBit=new Bitmap(m_PersonRun[sDirection][pointer]);
}
//加载到场景
m_personSprite.addChild(PersonBit);
//键盘侦听
m_personSprite.stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
//角色动作循环处理;
if (pointer < sStep - 1)
{
pointer++;
} else
{
pointer=2;
}
}
//加载图片完成处理事件;
private function completeHandler(event:Event):void
{
//根据图片的大小初始化BitmapData;
//注意如果你要保留原来的图片的透明度的话,必将transparent设置为true,同时设置填充色值的前两位为00;
sWidth=loader.width / m_RowNum;
sHeight=loader.height / m_RankNum;
var sBmd:BitmapData=new BitmapData(loader.width,loader.height,true,0x00FFFFFF);
sBmd.draw(loader);
//计算移动步数;
sStep = m_RowNum;
for (var j:uint=0; j < Math.floor(loader.height / sHeight); j++)
{
var arr:Array=new Array;
for (var i:uint=0; i < sStep; i++)
{
var bmd:BitmapData=new BitmapData(sWidth,sHeight,true,0x00FFFFFF);
//获取单个角色的BitmapData对象;
bmd.copyPixels(sBmd,new Rectangle(sWidth * i,sHeight * j,sWidth,sHeight),new Point(0,0));
arr.push(bmd);
}
//放入角色数组里;
m_PersonRun.push(arr);
}
//释放sBmd资源;
sBmd.dispose();
//开始运行角色动作;
timer.start()
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -