Перетаскивание объекта по маске во Flash
-
23-08-2019 - |
Вопрос
У меня есть небольшая задача во Flash, с которой у меня возникли небольшие проблемы.
Во-первых, у меня 2 слоя.Первый — это градиент различных цветов, поверх него — второй слой, который представляет собой анимацию формы (видеоклип).Для тех из вас, кто использует CS4 — классическую анимацию.Я использую CS3 и Actionscript 2.
Я уже сделал анимацию формы, она очень простая, она превращается в сюрикен и обратно в круг.
Дело в том, что мне нужно запрограммировать это так, чтобы это происходило только тогда, когда я навожу указатель мыши на круг.И если я уберу мышь от круга/сюрикена, она навсегда останется в той форме, в которой была в тот момент, когда я покинул эту область.Таким образом, если он находится на полпути от круга к сюрикену, и я убираю мышь из этой области, он должен остаться в этой половине формы, а не вернуться к кругу.
Во-вторых, мне нужна возможность перетаскивать фигуру, и при ее перетаскивании анимация формы должна вести себя как обычно.Отпуская его, он не прекращает «анимацию», а только перемещает указатель мыши в нужную область.Градиентный фон дает приятный эффект постоянно меняющихся цветов.
Я назвал анимацию формы «circle_mc».
Что я не могу реализовать:
1) Форма, реагирующая на наведение курсора мыши
2) Делаем фигуру перетаскиваемой.
Может ли кто-нибудь дать мне несколько советов, возможно, статей или примеров по этому поводу?
Решение
Если я правильно понимаю, вы сможете поместить что-то похожее на следующий скрипт внутри клипа «circle_mc», где находится ваша анимация формы.Это позволит вам создать несколько экземпляров клипа, выполняющих одно и то же действие.Я загрузил тест, чтобы вы могли проверить.Если вы совсем не это имели в виду, дайте мне знать.Вы также можете создать внешний класс, который будет использоваться в качестве базового класса вашей графики, и поместить туда код.
var hasRolledOver:Boolean = false;
this.onPress = function():Void
{
this.startDrag();
}
this.onRelease = function():Void
{
this.stopDrag();
}
this.onRollOver = function():Void
{
if (!hasRolledOver)
{
this.gotoAndPlay(2);
hasRolledOver = true;
}
}
this.onRollOut = function():Void
{
this.stop();
}