2010-04-22 50 views
0

我有一個帶有實例名稱爲「mc」的影片剪輯的階段。目前,我有一個代碼可以左右移動播放器,當左鍵或右鍵釋放時,「mc」會稍微滑動一點。我遇到的問題是讓「mc」向左移動,但右側使用的確切代碼不會。ActionScript MovieClip移動到左側,但不是右側

所有這些代碼是目前主要的舞臺上 - 框架中的一個

//Variables 

var mcSpeed:Number = 0;//MC's Current Speed 
var mcJumping:Boolean = false;//if mc is Jumping 
var mcFalling:Boolean = false;//if mc is Falling 
var mcMoving:Boolean = false;//if mc is Moving 
var mcSliding:Boolean = false;//if mc is sliding 
var mcSlide:Number = 0;//Stored for use when creating slide 
var mcMaxSlide:Number = 1.6;//Max Distance the object will slide. 

//Player Move Function 
p1Move = new Object(); 
p1Move = function (dir:String, maxSpeed:Number) { 
if (dir == "left" && _root.mcSpeed<maxSpeed) { 
    _root.mcSpeed += .2; 
    _root.mc._x -= _root.mcSpeed; 
} else if (dir == "right" && _root.mcSpeed<maxSpeed) { 
    _root.mcSpeed += .2; 
    _root.mc._x += _root.mcSpeed; 
} else if (dir == "left" && speed>=maxSpeed) { 
    _root.mc._x -= _root.mcSpeed; 
} else if (dir == "right" && _root.mcSpeed>=maxSpeed) { 
    _root.mc._x += _root.mcSpeed; 
} 
} 

//onEnterFrame for MC 
mc.onEnterFrame = function():Void { 
if (Key.isDown(Key.LEFT)) { 
    if (_root.mcMoving == false && _root.mcSliding == false) { 
    _root.mcMoving = true; 
    } else if (_root.mcMoving == true && _root.mcSliding == false) { 
    _root.p1Move("left",5); 
    } 
} else if (!Key.isDown(Key.LEFT)) { 
    if (_root.mcMoving == true && _root.mcSliding == false) { 
    _root.mcSliding = true; 
    } else if (_root.mcMoving == true && _root.mcSliding == true && _root.mcSlide<_root.mcMaxSlide) { 
    _root.mcSlide += .2; 
    this._x -= .2; 
    } else if (_root.mcMoving == true && _root.mcSliding == true && _root.mcSlide>=_root.mcMaxSlide) { 
    _root.mcMoving = false; 
    _root.mcSliding = false; 
    _root.mcSlide = 0; 
    _root.mcSpeed = 0; 
    } 
} else if (Key.isDown(Key.RIGHT)) { 
    if (_root.mcMoving == false && _root.mcSliding == false) { 
    _root.mcMoving = true; 
    } else if (_root.mcMoving == true && _root.mcSliding == false) { 
    _root.p1Move("right",5); 
    } 
} else if (!Key.isDown(Key.RIGHT)) { 
    if (_root.mcMoving == true && _root.mcSliding == false) { 
    _root.mcSliding = true; 
    } else if (_root.mcMoving == true && _root.mcSliding == true && _root.mcSlide<_root.mcMaxSpeed) { 
    _root.mcSlide += .2; 
    this._x += .2; 
    } else if (_root.mcMoving == true && _root.mcSliding == true && _root.mcSlide>=_root.mcMax) { 
    _root.mcMoving = false; 
    _root.mcSliding = false; 
    _root.mcSlide = 0; 
    _root.mcSpeed = 0; 
    } 
} 
}; 

我只是不明白爲什麼當你按下左箭頭其作品完全沒問題,但是當你按下右箭頭它沒有迴應。這實際上是相同的代碼。

回答

0

你永遠不會讀它,因爲你的循環代碼:

if(keyleft){ 
    //catches all keyleft 
} 
else if(!keyleft){ 
    //katches all non key left 
} 
else if(keyright){ 
    //Never called because all eventualities have been covered by the above. 
} 

使用if(keyright)代替else if,它應該工作。