?? 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 + -