我希望能够更改为步行动画的帧。我有3帧。第二个和第三个是2个步行框架 第一个是正常的
package {
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.ui.Keyboard;
public class main extends MovieClip {
var player:Player = new Player();
var px = 0;
var py = 0;
public function main() {
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyPressed);
addEventListener(Event.ENTER_FRAME, update);
}
public function KeyPressed(e:KeyboardEvent):void {
//trace(e.keyCode);
trace(px);
if(e.keyCode == 38 || e.keyCode == 87) {
trace('w/up');
py -= 5;
moveAnimation();
}
if(e.keyCode == 39 || e.keyCode == 68) {
trace('d/right');
px += 5;
moveAnimation();
}
if(e.keyCode == 37 || e.keyCode == 65) {
trace('a/left');
px -= 5;
moveAnimation();
}
if(e.keyCode == 40 || e.keyCode == 83) {
trace('s/down');
py += 5;
moveAnimation();
}
}
public function moveAnimation():void {
player.gotoAndStop(2);
player.gotoAndStop(3);
player.gotoAndStop(1);
}
public function update(e:Event):void {
addChild(player);
player.x = px;
player.y = py;
}
}
}
所以在我的另一个文件中(对于播放器类)我添加了一个stop();如果这有帮助。但它会移动。调用函数将其移动到第2帧或第3帧,但只有1.它没有动画它。只有一帧被调用并且卡住了
编辑:我用keyup事件监听器和stopAnimation()修复它,但现在当密钥为HELD时它不起作用。它只是卡在1帧上,因为它被称为太多。只有当按下第一个按键时,我才能这样做
答案 0 :(得分:0)
您应该更改Player
类以根据其状态控制自己的动画(向左走,向右走,静止不动)。据我所知,你只有2帧(#2和#3)代表步行动画,所以你需要在你的角色走路时在这两个帧之间交替。此外,您的Player
应更改为scaleX
属性。为此,请为您的Player
课程提供三个功能,然后在适当的时间调用它们。
public class Player extends MovieClip {
private var moving:Boolean=false;
public function Player() {
addEventListener(Event.ENTER_FRAME,update);
stop(); // just in case
}
function moveLeft():void {
this.scaleX=-1;
this.moving=true;
}
function moveRight():void {
this.scaleX=1;
this.moving=true;
}
function standStill():void { // stop() is defined in MovieClip
this.moving=false;
}
private function update(e:Event):void {
if (this.moving) {
if (this.currentFrame==3) { // change this if you have longer walk animation
gotoAndStop(2);
} else {
nextFrame();
} // faking animation loop with enterframe listener
} else {
gotoAndStop(1); // display stand still
}
}
}
然后您决定何时在听众中拨打player.moveLeft()
和其他人,以及何时拨打player.standStill()
。