Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   зацикленная анимация circle (http://www.flasher.ru/forum/showthread.php?t=194573)

Spacekeeper 17.02.2013 21:51

зацикленная анимация circle
 
В принципе задачу я решил, только своим, "недалеким" способом. сам новичек и хотелось бы узнать как можно ее решить теми способами, которые я ниасилил. значит имеется круг, простое кольцо из пунктирного контура без заливки, которое нужно заставить циклически вращаться. сначала я пытался зациклить его с помощью создания классической анимации и последующим вставлением условного оператора if в общий блок кода (на таймлайне во флэше) примерно так.
Код AS3:

 if(circle.currentFrame == 20)
{
        gotoAndPlay(1)
}

может я неправильно указал в скобках путь к клипу, а может вообще не нужно обращаться к нему, но я пробовал по разному и с добавлением this и еще много чего. кстати сам объект находится в другом клипе и я пишу код на таймлайне внутри него.
второй способ с использованием одного кадра, слушателя событий ENTER_FRAME и свойства rotation у клипа. тоже так и не смог нормально прирастить одно к другому (

а потом просто вставил gotoAndPlay(1) в конце самой анимации, но ведь разбрасываться кусочками кода по всему проэкту это же не вариант. подскажите как сделать все это нормально! ))

KumoKairo 17.02.2013 22:03

По-хорошему, каждый MovieClip по умолчанию зациклен, если в конце анимации на кадре нет stop();
Грубо говоря, всегда по умолчанию происходит аналог вашего gotoAndPlay(1), если это вручную не отключить

Spacekeeper 17.02.2013 22:28

прикол в том что анимация там дальше продолжается...
а это я и так знаю

KumoKairo 17.02.2013 22:39

Тогда можно воспользоваться давним проверенным способом - анимацию поворота впихнуть в один мувиклип, а в другой, "родительский" засунуть его в один кадр. Тогда застопорив анимацию в "родительском" мувиклипе на том кадре, где мувиклип вращается, получим бесконечную анимацию без всяких gotoAndPlay() и вообще, по сути, без кода :)
То есть растащить возможные состояния кружка на разные мувиклипы - один с вращением, другой стационарный, третий, допустим, с изменением размера, и эти мувиклипы засунуть в другой, контейнерный мувик.

NoisyFlasher 17.02.2013 23:30

А в чем трудность программного поворота?

Код AS3:

var speed: uint = 1;
var rect: Sprite = new Sprite();
 
rect.graphics.beginFill(0xFF0000);
rect.graphics.drawRect(0, 0, 50, 50);
rect.graphics.endFill();
rect.x = 100;
rect.y = 100;
addChild(rect);
 
rect.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
 
private function handleEnterFrame(event:Event):void {
        rect.rotation += speed;
}


Spacekeeper 18.02.2013 00:20

NoisyFlasher, с кодом разобрался. хватило всего пары строчек:
Код AS3:

rect.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
 
function handleEnterFrame(event:Event):void {
        rect.rotation += 5;
}

только при добавлении addChild он начинает постоянно набирать скорость.

KumoKairo, мне кажется такой способ довольно хлопотный, но я попробую.

спасибо вам за ответы! )

NoisyFlasher 18.02.2013 01:08

ну, пара, это понятно - я просто больше написал, что бы можно было "из коробки" пример скопировать и посмотреть)
А про addChild и набор скорости не понял - это как так?..

Spacekeeper 18.02.2013 02:21

Цитата:

Сообщение от NoisyFlasher (Сообщение 1121020)
ну, пара, это понятно - я просто больше написал, что бы можно было "из коробки" пример скопировать и посмотреть)
А про addChild и набор скорости не понял - это как так?..

да вот сам не пойму. если добавить его вот так:
Код AS3:

addChild(rect);
rect.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
 
function handleEnterFrame(event:Event):void {
        rect.rotation += 5;
}

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

NoisyFlasher 18.02.2013 12:06

А если rect.rotation трейсить каждый раз - там как все изменяется?..
Можно .fla поглядеть - а то мне интересно аж стало)

elder_Nosferatu 18.02.2013 16:04

Пациент, видимо, вращает програмно мувик, в котором и без того происходит анимация вращения. Два движения суммируются иполучается нежданчик...


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

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