Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops AS3如何停止循环的旋转?_Loops_Actionscript 3_Rotation - Fatal编程技术网

Loops AS3如何停止循环的旋转?

Loops AS3如何停止循环的旋转?,loops,actionscript-3,rotation,Loops,Actionscript 3,Rotation,从上面看,我的角色movieclip水平和垂直移动。 在起始位置,字符鼻子朝向屏幕顶部,因此当按下左键时,它应向左旋转90度,并朝向左+继续向左移动 因为我使用了一个移动功能+旋转,它现在可以循环90度旋转,并在左边旋转一圈。 我理解为什么会发生这种情况,但我对你们的问题是 如何使其仅旋转一次度角,并继续朝该方向移动 var leftArrow:Boolean; var speed:Number = 4; var charRadius:Number = 10; stage.addEventLi

从上面看,我的角色movieclip水平和垂直移动。 在起始位置,字符鼻子朝向屏幕顶部,因此当按下左键时,它应向左旋转90度,并朝向左+继续向左移动

因为我使用了一个移动功能+旋转,它现在可以循环90度旋转,并在左边旋转一圈。 我理解为什么会发生这种情况,但我对你们的问题是

如何使其仅旋转一次度角,并继续朝该方向移动

var leftArrow:Boolean;
var speed:Number = 4;
var charRadius:Number = 10;

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.addEventListener(Event.ENTER_FRAME, everyFrame);

function keyPressed(event:KeyboardEvent):void {
    if (event.keyCode == Keyboard.LEFT) {
        leftArrow = true;
    }

}

function keyReleased(event:KeyboardEvent):void {
    if (event.keyCode == Keyboard.LEFT) {
        leftArrow = false;
    }
}

function everyFrame(event:Event):void {
    var mazehit:Boolean = false;
    if (leftArrow) {

        for(var i:int = 0; i < speed; i++) {
            if(bounds.hitTestPoint(char.x - charRadius - i, char.y, true)) {



                mazehit = true;
                break;
            }
        }
        if(!mazehit) {

            char.x -= speed;
            char.rotation -= 90;

        }
var leftArrow:布尔值;
var速度:数字=4;
var charRadius:数字=10;
stage.addEventListener(KeyboardEvent.KEY_向下,按键);
stage.addEventListener(KeyboardEvent.KEY\u UP,keyReleased);
stage.addEventListener(Event.ENTER_FRAME,everyFrame);
功能键按下(事件:键盘事件):无效{
if(event.keyCode==Keyboard.LEFT){
leftArrow=true;
}
}
功能键已释放(事件:KeyboardEvent):无效{
if(event.keyCode==Keyboard.LEFT){
leftArrow=false;
}
}
函数everyFrame(事件:事件):void{
var mazehit:Boolean=false;
如果(左箭头){
对于(变量i:int=0;i
按下该键时设置角色状态变量,然后使用该状态设置角色动画可能会有所帮助

例如,在按下该键时设置旋转和x、y速度,然后使用这些值更新帧事件上的字符x、y和旋转

var leftArrow:Boolean;
var rightArrow:Boolean;
var speed:Number = 4;
var vx:Number = 0;
var vy:Number = 0;
var heading:Number = 0;
var charRadius:Number = 10;

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.addEventListener(Event.ENTER_FRAME, everyFrame);

function keyPressed(event:KeyboardEvent):void {
    if (event.keyCode == Keyboard.LEFT) {
        vx = -speed;
        vy = 0;
        heading = 90;
        leftArrow = true;
    }
    else if (event.keyCode == Keyboard.RIGHT) {
        vx = speed;
        vy = 0;
        heading = -90;
        rightArrow = true;
    }


}

function keyReleased(event:KeyboardEvent):void {
    if (event.keyCode == Keyboard.LEFT) {
        leftArrow = false;
    }
    else if (event.keyCode == Keyboard.RIGHT) {
        rightArrow = false;
    }
}

function everyFrame(event:Event):void {
    var mazehit:Boolean = false;
    if (leftArrow || rightArrow) {

        for(var i:int = 0; i < speed; i++) {
            if(bounds.hitTestPoint(char.x - charRadius - i, char.y, true)) {
                mazehit = true;
                break;
            }
        }
        if(!mazehit) {

            char.x += vx;
            char.y += vy;
            char.rotation = heading;

        }
var leftArrow:布尔值;
var rightArrow:布尔值;
var速度:数字=4;
变量vx:数值=0;
变量vy:Number=0;
变量标题:编号=0;
var charRadius:数字=10;
stage.addEventListener(KeyboardEvent.KEY_向下,按键);
stage.addEventListener(KeyboardEvent.KEY\u UP,keyReleased);
stage.addEventListener(Event.ENTER_FRAME,everyFrame);
功能键按下(事件:键盘事件):无效{
if(event.keyCode==Keyboard.LEFT){
vx=速度;
vy=0;
航向=90;
leftArrow=true;
}
else if(event.keyCode==Keyboard.RIGHT){
vx=速度;
vy=0;
标题=-90;
右箭头=真;
}
}
功能键已释放(事件:KeyboardEvent):无效{
if(event.keyCode==Keyboard.LEFT){
leftArrow=false;
}
else if(event.keyCode==Keyboard.RIGHT){
右箭头=假;
}
}
函数everyFrame(事件:事件):void{
var mazehit:Boolean=false;
if(左箭头| |右箭头){
对于(变量i:int=0;i
谢谢您的回答,但是注册点居中,当我按左/右/左时,movieclip不在同一个位置。x,你知道我做错了什么吗?这可能与我在“keyReleased”方法中犯的错误有关-我在两种情况下都有“leftArrow=false”。我已经纠正了它,现在应该可以工作了。我想k这与旋转有关,你的代码正是我所要求的,我只需要电影唇朝向箭头键的方向,我开始认为旋转可能不是正确的方式。感谢你的时间没有问题-我希望你找到解决方案-并随时发布更多问题;)