Flash AS3:单击 MC 2 时如何禁用 MC 1 的键盘控件?

Flash AS3: How to disable the keyboard controls of MC 1, when MC 2 is clicked?

我有两个不同的动画片段,它们可以用相同的键盘键移动。

如何在单击动画片段 2 时禁用动画片段 1 的键盘控件 反之亦然?

代码:

movieclip.addEventListener(MouseEvent.MOUSE_DOWN, onMcClick);
function onMcClick(e:MouseEvent):void
{
    var target:MovieClip = e.currentTarget as MovieClip;
    movieclip = target;
}

var speed:Number = 1.0;
var leftArrow:Boolean=false;
var rightArrow:Boolean=false;
var upArrow:Boolean=false;
var downArrow:Boolean=false;

addEventListener(Event.ENTER_FRAME, moveObject);

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHit);
stage.addEventListener(KeyboardEvent.KEY_UP, noKeyHit);

function keyHit(e:KeyboardEvent):void
{
    if(e.keyCode == Keyboard.LEFT) leftArrow = true;
    if(e.keyCode == Keyboard.RIGHT) rightArrow = true;
    if(e.keyCode == Keyboard.UP) upArrow = true;
    if(e.keyCode == Keyboard.DOWN) downArrow = true;
}


function noKeyHit2(e:KeyboardEvent):void
{
    if(e.keyCode == Keyboard.LEFT) leftArrow = false; 
    if(e.keyCode == Keyboard.RIGHT) rightArrow = false; 
    if(e.keyCode == Keyboard.UP) upArrow = false;
    if(e.keyCode == Keyboard.DOWN) downArrow = false;
}

function moveObject(e:Event):void
{
    if(leftArrow) movieclip.rotation -=0.75;
    if(rightArrow) movieclip.rotation +=0.75;
    if(upArrow) movieclip.scaleY +=0.01
    if(downArrow) movieclip.scaleY -=0.01;
}               

你可以做到这一点,只需将点击事件监听器添加到你的两个电影剪辑中,每次 select 被点击的一个作为 movieclip (全局变量):

var movieclip:MovieClip = null;

mc1.addEventListener(MouseEvent.MOUSE_DOWN, onMcClick);
mc2.addEventListener(MouseEvent.MOUSE_DOWN, onMcClick);
function onMcClick(e:MouseEvent):void
{
    movieclip = e.currentTarget as MovieClip;
}

就这些了。

希望能帮到你。