Форум 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

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

NoisyFlasher 18.02.2013 16:19

А я тоже подумал, что это может быть связано с вращением нескольких контейнеров, но разве в этом случае скорость не должна быть просто больше, чем задается? Ну, т.е. в 2, 3 раза больше - но не увеличиваться? Человек ведь пишет, что мувик разгоняется.

Spacekeeper 18.02.2013 23:35

Цитата:

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

пациент не такой уж и "пациент" и предусмотрел такой случай. нет там анимации никакой.

че не получается загузить? пишется в окне загрузки некорректный файл.

со вчерашнего дня я уже успел подизменить там файлик и сейчас этот эффект пропал, но появился другой, который отчасти все объясняет. в общем тогда не скорость разгонялась а просто добавлялись новые экземпляры, которые создавали визуальный эффект наращивания скорости, как то так )

NoisyFlasher 18.02.2013 23:54

Так дайте же весь код целиком или файлик скиньте, если это возможно, что бы посмотреть и разобраться)

Spacekeeper 19.02.2013 00:10

Вложений: 1
получилось только swf отправить. там какой то фильтр стоит на расширение.
в общем на большую планету если наводить мышкой, а потом убирать создается такой эффект, только раньше он сам создавался.

NoisyFlasher 19.02.2013 00:17

Хм. А у меня сложилось такое впечатление, что это не ускорение происходит, а как будто после наведения на планету, вокруг неё начинают на каждом кадре добавляться новые "обводки" - или это меня зрение подводит?)
А на остальных двух планетах эффект сделан так же, как на большой?..

UPD. а что в трейсах-то вообще? Если попробовать оттрейсить rect.rotation на каждом кадре, то при ускорении должен будет увеличиваться шаг между значениями, если я правильно понимаю.

Sync 19.02.2013 00:53

Вложений: 1
У меня там каждый раз экземпляр обводки остается, когда мышка уходит.
До состояния сплошной линии.

Добавлено через 47 секунд
ажно вот до такого состояния

NoisyFlasher 19.02.2013 01:00

Вот-вот. И я об этом же говорю. Так что дело вовсе не в ускорении)

Spacekeeper 19.02.2013 01:02

Цитата:

Сообщение от NoisyFlasher (Сообщение 1121203)
Хм. А у меня сложилось такое впечатление, что это не ускорение происходит, а как будто после наведения на планету, вокруг неё начинают на каждом кадре добавляться новые "обводки" - или это меня зрение подводит?)
А на остальных двух планетах эффект сделан так же, как на большой?..

UPD. а что в трейсах-то вообще? Если попробовать оттрейсить rect.rotation на каждом кадре, то при ускорении должен будет увеличиваться шаг между значениями, если я правильно понимаю.

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

NoisyFlasher 19.02.2013 01:15

ИМХО, не очень хорошая практика обновлять посты спустя пол часа, тем более после того, как на них уже ответили)

Spacekeeper 19.02.2013 01:26

Цитата:

Сообщение от NoisyFlasher (Сообщение 1121218)
ИМХО, не очень хорошая практика обновлять посты спустя пол часа, тем более после того, как на них уже ответили)

знаю, просто когда я решил обновить еще не было ответа ))

elder_Nosferatu 19.02.2013 01:26

Скорость там стабильная, просто окружности кривоватые и от того изображение плавает. Если сильно увеличить масштаб то это хорошо просматривается. Особенно, когда внизу остается статическая обводка.


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

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