Actionscript I';“我不能做我的雪碧”;“翻转”;

Actionscript I';“我不能做我的雪碧”;“翻转”;,actionscript,sprite,Actionscript,Sprite,首先,我要承认我是ActionScript的初学者,我正在编写自己的基本街机游戏(类似于旧街机游戏“Joust”)。虽然我已经能够编码精灵的运动,但当我按下向右箭头时,我希望使精灵朝另一个方向翻转。我想要么我可以试着绕着它的轴旋转对象(我已经试过多次了,证明很难),要么我可以试着用另一个精灵“替换”当前的精灵(正是朝相反方向的精灵)。我到处寻找用另一个精灵替换一个精灵的方法,但是没有用。当使用某个键码时,如何给这个精灵一个翻转效果?您使用的是as2/as3吗?可以将Y轴翻转180度 如果您使用a

首先,我要承认我是ActionScript的初学者,我正在编写自己的基本街机游戏(类似于旧街机游戏“Joust”)。虽然我已经能够编码精灵的运动,但当我按下向右箭头时,我希望使精灵朝另一个方向翻转。我想要么我可以试着绕着它的轴旋转对象(我已经试过多次了,证明很难),要么我可以试着用另一个精灵“替换”当前的精灵(正是朝相反方向的精灵)。我到处寻找用另一个精灵替换一个精灵的方法,但是没有用。当使用某个键码时,如何给这个精灵一个翻转效果?

您使用的是as2/as3吗?可以将Y轴翻转180度 如果您使用as2,则需要通过actionScript或 添加镜像到显示列表的第二个位图

    stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown);

    function keyPressedDown(event:KeyboardEvent):void
    {
         var key:uint = event.keyCode;

    switch (key)
   {
    case Keyboard.LEFT :
                    myMovieClip.rotaionY = 180; // MC will be mirrored
        break;
    case Keyboard.RIGHT :
                    myMovieClip.rotaionY = 0;

 }

试试下面这个简单的代码。这里的“对象”是要翻转的电影唇/精灵

stage.addEventListener(KeyboardEvent.KEY_DOWN, OnKeyDown);

function OnKeyDown(event:KeyboardEvent):void
{
    var uiKeyCode:uint = event.keyCode; 
    switch (uiKeyCode)
    {
        case Keyboard.LEFT :
            object.scaleX = -1; //flip
            break;
        case Keyboard.RIGHT :
            object.scaleX = 1; //unflip
            break;
    }
}
注意:如果您希望movieclip在其位置不发生任何移动的情况下翻转,则movieclip必须水平居中注册


告诉我这是否适用于您。

rotationY更容易理解,但它将电影剪辑设置为“3d模式”(使用
.transform.matrix3D
而不是
.transform.matrix
),它仅是actionscript 3.0,从flash player 10向上运行。使用2D转换矩阵稍微难一点,但不是简单翻转的火箭科学,它适用于actionscript 2.0,适用于大多数flash player版本(我想是flash player 6),对于初学者来说,比我的解决方案简单得多(+1)是的,乔治。但我想矩阵更快。不确定,但也不是真的。scaleX在幕后使用转换矩阵,因此只需使用setter即可。在as3中,getter有点慢(比setter慢),我的版本使用2(1获取矩阵,1检查
a
的值)和一个条件。在这种情况下,您的解决方案更简单、更快;)