【问题标题】:I'm unable to make my sprites "Flip"我无法让我的精灵“翻转”
【发布时间】:2013-04-19 16:52:36
【问题描述】:

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

【问题讨论】:

    标签: actionscript sprite


    【解决方案1】:

    试试下面这个简单的代码。这里的'object'是你想要翻转的movieclip/sprite

    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;
        }
    }
    

    注意:如果您希望影片剪辑在其位置不发生任何变化的情况下翻转,则影片剪辑必须水平居中注册。

    告诉我这是否适合你。

    【讨论】:

    • 对于初学者来说比我的解决方案简单得多 (+1)
    • 是的,乔治。但我猜矩阵更快。虽然不确定
    • 并非如此。 scaleX 无论如何都会在幕后使用转换矩阵,因此只需使用 setter。在 as3 中,getter 有点慢(比 setter 慢),我的版本使用 2(1 用于获取矩阵,1 用于检查 a 的值)和条件。在这种情况下,您的解决方案更简单、更快;)
    【解决方案2】:

    您使用的是 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;
    
     }
    

    【讨论】:

    • rotationY 更容易理解,但它将影片剪辑设置为“3d 模式”(使用.transform.matrix3D 而不是.transform.matrix),它仅是actionscript 3.0,它适用于flash player 10 以上。使用 2D 变换矩阵稍微困难一些,但对于简单的翻转来说不是火箭科学,并且可以在 actionscript 2.0 中使用,并且可以与大多数 flash 播放器版本一起使用(我认为是 flash 播放器 6)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多