Loops AS3如何停止循环的旋转?
从上面看,我的角色movieclip水平和垂直移动。 在起始位置,字符鼻子朝向屏幕顶部,因此当按下左键时,它应向左旋转90度,并朝向左+继续向左移动 因为我使用了一个移动功能+旋转,它现在可以循环90度旋转,并在左边旋转一圈。 我理解为什么会发生这种情况,但我对你们的问题是 如何使其仅旋转一次度角,并继续朝该方向移动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
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这与旋转有关,你的代码正是我所要求的,我只需要电影唇朝向箭头键的方向,我开始认为旋转可能不是正确的方式。感谢你的时间没有问题-我希望你找到解决方案-并随时发布更多问题;)