DFdou's Blog Life is short,Be yourself.

7kankan11bookekzwС˵Ҫ · uawx鶼Ķ ðƴӢ ޴½
2402/093

AS3-MC的移动控制

大部分的游戏,都离不开MC的移动,下边是一个AS3的MC移动Demo:

代码部分:

//存储四个方向键是否按下的变量
var leftArrow:Boolean = false;
var rightArrow:Boolean = false;
var upArrow:Boolean = false;
var downArrow:Boolean = false;

stage.addEventListener (KeyboardEvent.KEY_DOWN, keyPressedDown);
stage.addEventListener (KeyboardEvent.KEY_UP, keyPressedUp);
stage.addEventListener (Event.ENTER_FRAME, mcMove);
stage.addEventListener (Event.DEACTIVATE, missingStage);//Flash处于非活动状态时调用
//按键时的检测,左上右下分别是37,38,39,40
function keyPressedDown (_evt:KeyboardEvent) {
	if (_evt.keyCode == 37) {
		leftArrow = true;
	} else if (_evt.keyCode == 39) {
		rightArrow = true;
	} else if (_evt.keyCode == 38) {
		upArrow = true;
	} else if (_evt.keyCode == 40) {
		downArrow = true;
	}
}

//松开按键时
function keyPressedUp (_evt:KeyboardEvent) {
	if (_evt.keyCode == 37) {
		leftArrow = false;
	} else if (_evt.keyCode == 39) {
		rightArrow = false;
	} else if (_evt.keyCode == 38) {
		upArrow = false;
	} else if (_evt.keyCode == 40) {
		downArrow = false;
	}
}

//MC的移动部分
function mcMove (_evt:Event) {
        //移动的速度
	var speed:Number = 8;
	if (leftArrow) {
                //MC的位置检测,下边相同
		if (0<=mc.x) {
			mc.x -= speed;
		}
	}
	if (rightArrow) {
		if(mc.x<=stageW-mc.width-20){
		mc.x += speed;
		}
	}
	if (upArrow) {
		if(0<=mc.y){
		mc.y -= speed;
		}
	}
	if (downArrow) {
		if(mc.y<=stageH-mc.height-20){
		mc.y += speed;
		}
	}
}

//Flash处于非激活状态时
function missingStage (_evt:Event) {
	leftArrow = false;
	rightArrow = false;
	upArrow = false;
	downArrow = false;
}

Some Related Posts

Comments (3) Trackbacks (0)
  1. :dahan
    ENTER_FRAME
    Event.DEACTIVATE
    浪费资源方法.建议换个方法实现.只用
    KeyboardEvent.KEY_DOWN
    KeyboardEvent.KEY_UP

    [Reply]

    DFdou Reply:

    @, 恩,是个不错的做法,,ENTER_FRAME的确耗资源。。

    [Reply]


Leave a comment

:zhuang :xizao :wuwu :wenhao :wc :touxiang :shuaya :shuajian :shengtian :paopao :no :meinv :maonv :loveu :leilei :kua :jrjr :dahan :chi :chaocai :byebye


CommentLuv Enabled

No trackbacks yet.