Перетаскивание объекта на маску во Flash - PullRequest
0 голосов
/ 03 апреля 2009

У меня есть небольшая задача во Flash, с которой у меня небольшие проблемы.

Прежде всего, у меня есть 2 слоя. Первый - это градиент с различными цветами, поверх которого находится второй слой, который является анимацией формы (фрагмент ролика). Для тех из вас, кто использует CS4, классическую анимацию. Я использую CS3 и Actionscript 2

Я уже сделал анимацию формы, все очень просто, она превращается в сюрикен и возвращается к кругу.

Дело в том, что мне нужно запрограммировать его так, чтобы это происходило только тогда, когда я наводил указатель мыши на круг. И если я отведу мышь от круга / сюрикена, он должен оставаться навсегда в той форме, в которой он находился в тот момент, когда я покинул область. Поэтому, если он находится на полпути от круга к сюрикену, и я убираю свою мышь из области, он должен оставаться в этой форме на полпути, а не возвращаться обратно в круг.

Во-вторых, мне нужно уметь перетаскивать фигуру, и при ее перетаскивании анимация формы должна вести себя как обычно. Отпустив его, он не перестанет «твининг», а только вытащит мою мышь, если его область. Градиентный фон дает приятный эффект от постоянно меняющихся цветов.

Я назвал анимацию формы "circle_mc".

Что я не могу реализовать:
1) Форма реагирует на мое наведение мыши
2) Создание формы перетаскиваемой.

Может кто-нибудь дать мне несколько советов, возможно, статьи или примеры по этому поводу?

1 Ответ

0 голосов
/ 03 апреля 2009

Если я правильно понимаю, вы должны иметь возможность поместить что-то похожее на следующий скрипт в клип "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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...