时间轴代码:
import flash.events.Event;
import flash.events.KeyboardEvent;
stop();
var m:CMario;
stage.addEventListener(Event.ENTER_FRAME,onEnter);
function onEnter(e:Event):void{
m = new CMario();
stage.addChild(m);
m.x=stage.stageWidth/2;
m.y=stage.stageHeight/2;
stage.removeEventListener(Event.ENTER_FRAME,onEnter);
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
function KeyDown(e:KeyboardEvent):void{
switch(e.keyCode){
case Keyboard.RIGHT:
m.ChangeDiection(true);
m.StartWalks();
break;
case Keyboard.LEFT:
m.ChangeDiection(false);
m.StartWalks();
break;
}
}
stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);
function KeyUp(e:KeyboardEvent):void{
switch(e.keyCode){
case Keyboard.RIGHT:
m.StopWalks();
break;
case Keyboard.LEFT:
m.StopWalks();
break;
}
}
CMario类代码:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class CMario extends Sprite
{
private var _walks:Array = new Array();
private var _revwalks:Array = new Array();//反向图片
private var img:Bitmap;
private var _direction:Boolean = true;//true为正向
private var timer:Timer = new Timer(100);
public function CMario()
{
// constructor code
var imgURL:URLRequest = new URLRequest();
imgURL.url = "images/full.png";
var imgLoader:Loader = new Loader();
imgLoader.load(imgURL);
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, finished);
timer.addEventListener(TimerEvent.TIMER,onTimer);
}
public function ChangeDiection(direct:Boolean):void{
_direction=direct;
//trace(_direction);
}
public function StartWalks():void{
timer.start();
}
public function StopWalks():void{
if(img != null){
this.removeChild(img);
}
timer.stop();
if(_direction){
img = new Bitmap(_walks[0]);
}else{
img = new Bitmap(_revwalks[0]);
}
this.addChild(img);
}
function finished(evt:Event):void
{
trace("successfully loaded the image!");
var myBitmapData:BitmapData = evt.target.content.bitmapData;
for(var i:int=0;i<7;i++){
var mbd:BitmapData = new BitmapData(20,22,true,0x00000000);
mbd.copyPixels(myBitmapData,new Rectangle(35,23*(i+1),20,22),new Point(0,0));
_walks.push(mbd);
}
for(var j:int=0;j<7;j++){
_revwalks.push(rightandleft(_walks[j]));
}
StopWalks();
}
private var _index:int=1;
private function onTimer(e:TimerEvent):void{
if(img != null){
this.removeChild(img);
}
if(_index==4){
_index=1;
}
if(_direction){
img = new Bitmap(_walks[_index++]);
}else{
img = new Bitmap(_revwalks[_index++]);
}
this.addChild(img);
}
/**
* @ 水平翻转
* @param bt BitmapData对象
* @Return 新的BitmapData
*/
private function rightandleft(bt:BitmapData):BitmapData
{
var bitmapData:BitmapData = new BitmapData(bt.width,bt.height,true,0x00000000);
for (var i:int=0; i<bt.height; i++)
{
for (var j:int=0; j<bt.width; j++)
{
bitmapData.setPixel32(bt.width-j-1, i, bt.getPixel32(j,i));
}
}
return bitmapData;
}
}
}
图片素材:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=8d03db40a751f819f1250342eab44a76/c3abfcfaaf51f3de009ee40f83eef01f3b2979ee.jpg?tbpicau=2025-02-28-05_f2acfac11ac08b1ef4fb640836a24287)
目前就是简单的左右行走。
import flash.events.Event;
import flash.events.KeyboardEvent;
stop();
var m:CMario;
stage.addEventListener(Event.ENTER_FRAME,onEnter);
function onEnter(e:Event):void{
m = new CMario();
stage.addChild(m);
m.x=stage.stageWidth/2;
m.y=stage.stageHeight/2;
stage.removeEventListener(Event.ENTER_FRAME,onEnter);
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
function KeyDown(e:KeyboardEvent):void{
switch(e.keyCode){
case Keyboard.RIGHT:
m.ChangeDiection(true);
m.StartWalks();
break;
case Keyboard.LEFT:
m.ChangeDiection(false);
m.StartWalks();
break;
}
}
stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);
function KeyUp(e:KeyboardEvent):void{
switch(e.keyCode){
case Keyboard.RIGHT:
m.StopWalks();
break;
case Keyboard.LEFT:
m.StopWalks();
break;
}
}
CMario类代码:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class CMario extends Sprite
{
private var _walks:Array = new Array();
private var _revwalks:Array = new Array();//反向图片
private var img:Bitmap;
private var _direction:Boolean = true;//true为正向
private var timer:Timer = new Timer(100);
public function CMario()
{
// constructor code
var imgURL:URLRequest = new URLRequest();
imgURL.url = "images/full.png";
var imgLoader:Loader = new Loader();
imgLoader.load(imgURL);
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, finished);
timer.addEventListener(TimerEvent.TIMER,onTimer);
}
public function ChangeDiection(direct:Boolean):void{
_direction=direct;
//trace(_direction);
}
public function StartWalks():void{
timer.start();
}
public function StopWalks():void{
if(img != null){
this.removeChild(img);
}
timer.stop();
if(_direction){
img = new Bitmap(_walks[0]);
}else{
img = new Bitmap(_revwalks[0]);
}
this.addChild(img);
}
function finished(evt:Event):void
{
trace("successfully loaded the image!");
var myBitmapData:BitmapData = evt.target.content.bitmapData;
for(var i:int=0;i<7;i++){
var mbd:BitmapData = new BitmapData(20,22,true,0x00000000);
mbd.copyPixels(myBitmapData,new Rectangle(35,23*(i+1),20,22),new Point(0,0));
_walks.push(mbd);
}
for(var j:int=0;j<7;j++){
_revwalks.push(rightandleft(_walks[j]));
}
StopWalks();
}
private var _index:int=1;
private function onTimer(e:TimerEvent):void{
if(img != null){
this.removeChild(img);
}
if(_index==4){
_index=1;
}
if(_direction){
img = new Bitmap(_walks[_index++]);
}else{
img = new Bitmap(_revwalks[_index++]);
}
this.addChild(img);
}
/**
* @ 水平翻转
* @param bt BitmapData对象
* @Return 新的BitmapData
*/
private function rightandleft(bt:BitmapData):BitmapData
{
var bitmapData:BitmapData = new BitmapData(bt.width,bt.height,true,0x00000000);
for (var i:int=0; i<bt.height; i++)
{
for (var j:int=0; j<bt.width; j++)
{
bitmapData.setPixel32(bt.width-j-1, i, bt.getPixel32(j,i));
}
}
return bitmapData;
}
}
}
图片素材:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=8d03db40a751f819f1250342eab44a76/c3abfcfaaf51f3de009ee40f83eef01f3b2979ee.jpg?tbpicau=2025-02-28-05_f2acfac11ac08b1ef4fb640836a24287)
目前就是简单的左右行走。