Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Actionscript 3 水平翻转字符(左上对齐点)_Actionscript 3_Flash_Actionscript - Fatal编程技术网

Actionscript 3 水平翻转字符(左上对齐点)

Actionscript 3 水平翻转字符(左上对齐点),actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我创造了马里奥这个角色,它在播放不同的动画,比如站立、行走、跳跃……除了水平翻转,一切都正常。 在我的key_down功能中,如果按了rightKey,则设置player.scaleX=1, 否则按左键player.scaleX=-1 这是有效的,我的英语不是很好,所以这里有一个链接可以更好地理解: 唯一的问题是,即使只按一次左键或右键, 它将翻转播放器,但也将移动播放器约30像素(比方说) 我以前用过这个,如果玩家有中心注册点,它可以正常工作,但现在我有左上注册点,不知道如何解决这个问题 有

我创造了马里奥这个角色,它在播放不同的动画,比如站立、行走、跳跃……除了水平翻转,一切都正常。 在我的key_down功能中,如果按了rightKey,则设置player.scaleX=1, 否则按左键player.scaleX=-1

这是有效的,我的英语不是很好,所以这里有一个链接可以更好地理解:

唯一的问题是,即使只按一次左键或右键, 它将翻转播放器,但也将移动播放器约30像素(比方说)

我以前用过这个,如果玩家有中心注册点,它可以正常工作,但现在我有左上注册点,不知道如何解决这个问题


有人能解释一下吗?

在按系数
-1
缩放后,您必须将DisplayObject向右移动
宽度
像素数。这里有一张图片说明了我的意思。图像中的橙色点是配准点。

下面是您需要添加到代码中的内容:

player.scaleX = -1;
player.x += width;

但它给了我另一个问题,在我设置scaleX=-1之后,如果我简单地添加player.x+=player.width…那么player将无法正常移动,这是我的key_down函数,如果(event.keyCode==Keyboard.RIGHT){rightKey=true;player.vx=6;player.scaleX=1;}否则如果(event.keyCode==Keyboard.LEFT){leftKey=true;player.vx=-6;player.scaleX=-1;}然后我设置了一个帧间函数player.x+=player.vx,所以问题是,每当我单击左箭头键或右箭头键时,它都会运行player.x+=width或player.x-=width,这会影响玩家的移动。与其设置
player.scaleX
,不如设置其子级的
scaleX
属性来镜像它们。谢谢你的帮助,我找到了t最简单的解决方案是,我创建了布尔值var flipped,现在当我翻转播放器时,我只移动他一次,如果值为false,则将var flipped设置为true。if(event.keyCode==Keyboard.RIGHT){player.vx=6;if(flip==true){player.scaleX=player.width;flip=false;} }