Вопрос

У меня есть небольшая задача во 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();
}

http://typeoneerror.com/media/as/test.fla.zip

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top