Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   play(); после stopDrag(); (http://www.flasher.ru/forum/showthread.php?t=129696)

unused_name 08.09.2009 15:02

play(); после stopDrag();
 
Есть анимация на таймлайне для экземпляра клипа, на котором стоит этот скрипт

Код AS1/AS2:

on (press) {
        startDrag(this, false, 0, 0, 550, 0);
        this.onMouseMove = function() {
                var targetFrame:Number;
                targetFrame = Math.round(_root.rooms._totalframes*this._x/550);
                _root.rooms.gotoAndPlay(targetFrame);
        };
}
on (release, rollOut, releaseOutside) {;
stopDrag();
delete this.onMouseMove;
this.parent.play();
}

Как после выполнения stopDrag(); возобновить его анимацию? Почему до драга анимация работает, а после - нет, и не запускается снова ни с помощью play(); ни с помощью gotoAndPlay(targetFrame);?

Wolsh 08.09.2009 15:44

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

unused_name 08.09.2009 16:31

Цитата:

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

- если он "себе плей", то где анимация? И почему драг все еще действует, т.е. код вполне благополучно продолжает работать?

Цитата:

Сообщение от Wolsh (Сообщение 849103)
Вобщем, разберитесь, чем отличается мультфильм от программы. Представьте Ворд, написанный как анимацию в кадрах с переходами на нужный?

- спасибо за наводку, буду рыть в этом направлении, а то я не знал чем они отличаются. Лучше начать с Ворда? А где там таймлайн? А если серьезно - бред, лучше молчать чем так умничать.

Цитата:

Сообщение от Wolsh (Сообщение 849103)
Да еще и на мертвом языке-прародителе ActionScript.

- что конкретно тут самое мертвое? Некоторые вещи на ac2 делать гораздо быстрее и проще чем на ас3, тем более мне, дизайнеру.

mooncar 08.09.2009 17:35

Самое мертвое тут написание кода на кнопках. Мертв не AS2, а устаревшие древние методы, наследованные от AS1. Слушайте, что вам говорят, и думайте. А про AS3 кстати ничего не сказали.
Если у вас спросят как у дизайнера совета, почему неправильно работают фильтры в 4-м Фотошопе, и как это исправить, тогда и карты вам в руки в подобной ситуации.

iNils 08.09.2009 17:44

Цитата:

- что конкретно тут самое мертвое? Некоторые вещи на ac2 делать гораздо быстрее и проще чем на ас3, тем более мне, дизайнеру.
У вас ac2 и не пахнет, это даже не ac1, а ac0.5

unused_name 08.09.2009 18:03

Ок, ас0,5, договорились. Вы тут все крутые и продвинутые, а я в каменном веке. Я наивно полагаю что чем код короче - тем удобнее. Я конечно могу сделать все на ас3, используя, например, ЭТО, но мой ущербный путь позволит мне сделать все намного быстрее. Я придумал как обойти описанную проблему, там и проблемы то никакой не было по сути, убрал я анимацию с таймлайна и прибавляю/отнимаю значения "х" теперь, как и делал до этого всегда. Но вот почему анимация не запускалась все еще интересно, может кто все-таки знает? Драг её убивает как-то?

NoCD 08.09.2009 18:25

Тебе нужно анимированный клип перетащить с одного места на другой, с помощью драг? Во время переноса, анимация клипа должна останавливаться, а после драга запускаться снова?

iNils 08.09.2009 18:25

Цитата:

а я в каменном веке. Я наивно полагаю что чем код короче - тем удобнее. Я конечно могу сделать все на ас3
Глаза откройте. От вас не требуют ас3, а говорят про банальный ас1, который такой же короткий, но удобнее по написанию и идеологии, чем код на кнопках. Многие просто игнорируют вопросы с кодом на кнопках, они не хотят в это копаться и создавать для себя проблемы.

unused_name 08.09.2009 18:28

Цитата:

Сообщение от NoCD (Сообщение 849152)
Тебе нужно анимированный клип перетащить с одного места на другой, с помощью драг? Во время переноса, анимация клипа должна останавливаться, а после драга запускаться снова?

- да, именно так. UPD Сорри, не совсем так, анимация этого клипа происходит на таймлайне родительского клипа, т.е. сам он статичен, а вот запустить снова анимацию родителя не удается.

Добавлено через 9 минут
Цитата:

Сообщение от iNils (Сообщение 849153)
Глаза откройте. От вас не требуют ас3, а говорят про банальный ас1, который такой же короткий, но удобнее по написанию и идеологии, чем код на кнопках. Многие просто игнорируют вопросы с кодом на кнопках, они не хотят в это копаться и создавать для себя проблемы.

- если убрать код со слайдера придется делать задержку при изменении координаты, и еще изменение этой задержки, что-бы получить движение с замедлением. Не то что-бы это очень сложно, но от этого код радувается раза в 3, и у меня больше шансов в нем запутаться. Я прекрасно воспринимаю логику програмирования, но у меня постоянно возникают проблемы с синтаксисом, поэтому так (через скрипты на кнопках и в кадрах) у меня получается все быстрее. Конечно это плохо, но пока это так.

NoCD 08.09.2009 18:41

Вложений: 1
так пойдет:
Код AS1/AS2:

attachMovie("mc","mc",100,{_x:100,_y:100})
mc.onPress = function(){this.stop();this.startDrag()}
mc.onRelease = function(){this.play();stopDrag();}

в клипе mc сделана простая анимация, которая во время драга останавливается, а в состоянии покоя продолжает воспроизводить анимацию.

Цитата:

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

1.Сделал бы общий контейнер, где будут крутиться картинки. cont_c = createEmptyMovieClip("cont_c",1)
2.Для каждой картинки (внутри созданного общего контейнера) делал бы отдельный пустой клип, вставил бы анимированный бэкграунд туда. Назвал бы их как нибудь box_0, box_1, box_2 ... box_n
3. Прикрепил бы соответствующую картинку к этому box_n.
4. Двигал бы эти box через цикл.
А обратиться к box ничего сложного не составит.
например: cont_c.box_n.play() или cont_c.box_n.stop()


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

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