2013-04-18 55 views
0

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

回答

0

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

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; 

} 
+0

rotationY更容易理解,但它将影片剪辑设置为'3d模式'(使用'.transform.matrix3D'而不是'.transform.matrix'),它仅支持ActionScript 3.0,并且它从Flash Player 10向上工作。使用2D转换矩阵稍微强硬一点,但不是火箭科学的一个简单的翻转,并在ActionScript 2.0作品,并与大多数Flash播放器版本(我下定义为Flash播放器6) –

+0

当然,我认为rotationY就足够了,大声笑 – joshua

1

试试下面这个简单的代码。这里“对象”是要翻转

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

注意的影片剪辑/精灵:如果你想电影剪辑,而不会在其位置上的任何变化翻转,则影片剪辑必须水平中心注册。

告诉我,如果这对你有用。

+0

对于初学者来说比我的解决方案简单得多(+1) –

+0

是的乔治。但我猜矩阵速度更快。不知道 – shinobi

+1

不是真的。 scaleX无论如何都使用背后的变换矩阵,所以这是使用setter的问题。 Getter在as3上有点慢(比setter慢),我的版本使用2(1来获取矩阵,一个检查'a'的值)和一个条件。在这种情况下,您的解决方案更简单快捷;) –