#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 должен светиться и так далее. Спасибо