Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Плавное увеличение рисунка в мувиклипе при наведении мыши, и уменьшение при отведении (http://www.flasher.ru/forum/showthread.php?t=113050)

Rufio 17.06.2008 13:59

Плавное увеличение рисунка в мувиклипе при наведении мыши, и уменьшение при отведении
 
Здравствуйте,
Совсем недавно пришлось перейти на actioscript 3.0, и нет пока навыков. Проблема такая:
Раньше на actioscript 2.0 я писала код с import mx.transitions.Tween и т.п. для легкого увеличения мувика при наведении мыши и уменьшении при отведении. На actioscript 3.0 это уже не срабатывает. Не знаю, что сделать. Может, проблема в синтаксисе или писать уже нужно совсем другое в коде? В голове уже такая путаница, что из кусочков такой код мне не собрать для actioscript 3.0.

Могли бы вы помочь мне с этой проблемой? Показать пример файла с кодом, или выслать линк на подробный туториал?

Спасибо!

Alex Lexcuk 18.06.2008 00:07

Да эти устаревшие технологии срабатывают, но зачем они? actioscript 3.0 инструмент покруче.
легко и просто пользоваться специальным классом
Animator
Что бы увеличить мувик с инстанс именем например my_mc достаточно написать простой код
Код:

import fl.transitions.*;
import fl.transitions.easing.*;


var m_out_trigger:Boolean=true;
import fl.motion.Animator;
import fl.motion.MotionEvent;

var abox_xml_big:XML = <Motion duration="10" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
    <Keyframe index="0" x="0" y="0" scaleX="1" scaleY="1" rotation="0">

        <tweens>
            <SimpleEase ease="0.8"/>
        </tweens>
    </Keyframe>

    <Keyframe index="9" x="0" y="0" scaleX="3" scaleY="3" rotation="0"/>
</Motion>;
var abox_animator:Animator = new Animator(abox_xml_big, my_mc);

Комментировать? Или нет? Вот в чем вопрос...
Теперь, что бы мувик начал плавно увеличиваться нужно запустить функцию
Код:

abox_animator.play();
Как же его плавно уменьшить? Думать долго не целесообразно...
Код:

var abox_xml_small:XML = <Motion duration="10" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
    <Keyframe index="0" x="0" y="0" scaleX="3" scaleY="3" rotation="0">

        <tweens>
            <SimpleEase ease="0.8"/>
        </tweens>
    </Keyframe>

    <Keyframe index="9" x="0" y="0" scaleX="1" scaleY="1" rotation="0"/>
</Motion>;


var abox_animator_small:Animator = new Animator(abox_xml_small, my_mc);

abox_animator_small.play();//эту функцию нужно вызвать по необходимости она уменьшит

http://dnadillo.dn.ua/fla/js-swf-htm...e-on-scale.swf
http://dnadillo.dn.ua/fla/js-swf-htm...e-on-scale.zip

ALiEN_ 18.06.2008 20:13

используй класс Tweener http://code.google.com/p/tweener/downloads/list

Rzer 19.06.2008 00:39

2 Alex Lexcuk: ты всегда для простого увеличения одного объекта, пишешь так много xml и текста? Или только другим советуешь?

Alex Lexcuk 19.06.2008 13:01

Простое увеличение в три раза делается так
Код:

my_mc.scaleX=my_mc.scaleY=3;
А плавное увеличение в три раза за 9 кадров делается с использованием xml, но всегда писать их не нужно, можно один раз написать и пользоваться ими сколько нужно, можно даже засунуть их в отдельный класс, назвать его caurinaMegaLite и сувать всем кому ни попадя.

Gaen 19.06.2008 13:56

Плавное увеличение делается в две строчки.
Код:

new Tween(mc, "width", easingFunction, mc.width, mc.width*3, fadeTime, true);
new Tween(mc, "height", easingFunction, mc.height, mc.height*3, fadeTime, true);


Alex Lexcuk 22.06.2008 18:24

Код:

import fl.transitions.Tween;
import fl.transitions.easing.*;

box.addEventListener( MouseEvent.ROLL_OUT, mouseListener );
box.addEventListener( MouseEvent.ROLL_OVER, mouseListener );
box.buttonMode = true;

function mouseListener( event:MouseEvent ):void
{
  switch( event.type )
      {
        case MouseEvent.ROLL_OVER:
            new Tween( box, "scaleX", Strong.easeOut,  box.scaleX, 1.5, .50, true );
            new Tween( box, "scaleY", Strong.easeOut, box.scaleY, 1.5, .50, true );
        break;
                       
        case MouseEvent.ROLL_OUT:
            new Tween( box, "scaleX", Strong.easeOut, box.scaleX, 1.0, .50, true );
            new Tween( box, "scaleY", Strong.easeOut, box.scaleY, 1.0, .50, true );
        break;
        }
}


Makak 16.10.2008 17:15

если мувик делаеться программно то при ROLL_OVER он раширяется вправо и вниз, а как его... что бы он равномерно во все стороны ?!?!

darksranger 16.10.2008 17:30

ну вот, кстате, я вижу прелести в классе Animator

можно описать детальную анимацию ( не вызываю при этом кучу твинов )

вопрос на засыпку
что быстрее будет работать в "жеских" условиях ? класс аниматор или анимация через каурину ( твиновая которая )

Xpb7 16.10.2008 18:23

Цитата:

Сообщение от Makak (Сообщение 770771)
если мувик делаеться программно то при ROLL_OVER он раширяется вправо и вниз, а как его... что бы он равномерно во все стороны ?!?!

Ваш програмный мувик по умолчанию имеет точку трансформации в левом верхнем углу своего баундинг бокса.
Поместите програмно созданный мувик в контейнер и выровняйте по центру. Эффект применяйте к контейнеру.

Цитата:

Сообщение от Alex Lexcuk (Сообщение 746128)

Каурина анимирует плавнее. Alex, я поражаюсь твоим творениям. =)


Часовой пояс GMT +4, время: 01:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.