Изменение положения объектов на сцене щелчком мыши — ActionScript 3

#actionscript-3 #movieclip

#actionscript-3 #movieclip

Вопрос:

У меня есть несколько mc на сцене, и я хочу, чтобы они менялись на mc с помощью antoher, нажимая на них. Например, если я нажму на mc1, а затем на mc2, они должны изменить позиции. есть идеи, как это сделать? спасибо за ваше время

Ответ №1:

Вам нужно иметь событие щелчка для видеоролика и записать его в переменную, на которой был нажат movieclip, а затем, когда нажат 2-й, вы просто меняете их позиции. Я дам вам фрагмент кода, который должен работать, и его должно быть достаточно, чтобы научить вас, как это делается.

 import flash.events.MouseEvent;
// Variable that will be used to store the 1st clicked MC
var lastClickedSwapMC;

//First we define the function to be called
function clickEventSwapMcs(evt : MouseEvent) {
    // Verify if a mc wasn't previously clicked
    if(lastClickedSwapMC == null) {
        // If it wasn't, it's the 1st time, so store the MC that was clicked
        lastClickedSwapMC = evt.currentTarget;
    } else {
        // If it was, we just need to swap the positions of the stored one with the one just clicked
        var savedX : Number = evt.currentTarget.x;
        var savedY : Number = evt.currentTarget.y;
        evt.currentTarget.x = lastClickedSwapMC.x;
        evt.currentTarget.y = lastClickedSwapMC.y;
        lastClickedSwapMC.x = savedX;
        lastClickedSwapMC.y = savedY;
        //After swaping their position, we clear the last clicked MC
        lastClickedSwapMC = null;
    }
}

//Now we register the click event on them so it calls the function
mc1.addEventListener(MouseEvent.CLICK, clickEventSwapMcs);
mc2.addEventListener(MouseEvent.CLICK, clickEventSwapMcs);
 

Комментарии:

1. я должен кое-что упомянуть: этот метод работает, только если используется evt.target… и не «evt.currentTarget …», поэтому я не буду вслух использовать «текущий». ваше решение работает, но я получаю сообщение об ошибке, в котором говорится, что значение «lastClickedSwapMC» равно нулю после первого щелчка. поэтому я использую только позицию последнего нажатого mc. «lastClickedSwapMC» никогда не получит значение null.

2. Здравствуйте, я не понимаю, что с вами происходит. Я протестировал его на собственной fla, и он работает безупречно. Что касается разницы между target и currentTarget, проверьте это: help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/… Но в основном разница в том, что currentTarget — это объект, который зарегистрировал событие, а target для MouseEvent — это объект, на который был нажат (который может быть сыном mc1 и mc2, а не на самом деле их).).

3. вы знаете, как применить эффект размытия к этим mc? я уже установил бит «GlowFilter», но я не знаю, как применить его к каждому mc, чтобы при нажатии на один из mc этот mc должен светиться и так далее. Спасибо