Просмотр полной версии : play(); после stopDrag();
unused_name
08.09.2009, 15:02
Есть анимация на таймлайне для экземпляра клипа, на котором стоит этот скрипт
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);?
наверно, потому что парент себе плей и уже давно на другом кадре, где этот код не действует, потому что объект, на котором он висит, прошел через десяток кейфреймов. Вобщем, разберитесь, чем отличается мультфильм от программы. Представьте Ворд, написанный как анимацию в кадрах с переходами на нужный? Вы делаете примерно то же. Да еще и на мертвом языке-прародителе ActionScript.
unused_name
08.09.2009, 16:31
потому что парент себе плей и уже давно на другом кадре, где этот код не действует, потому что объект, на котором он висит, прошел через десяток кейфреймов. - если он "себе плей", то где анимация? И почему драг все еще действует, т.е. код вполне благополучно продолжает работать?
Вобщем, разберитесь, чем отличается мультфильм от программы. Представьте Ворд, написанный как анимацию в кадрах с переходами на нужный? - спасибо за наводку, буду рыть в этом направлении, а то я не знал чем они отличаются. Лучше начать с Ворда? А где там таймлайн? А если серьезно - бред, лучше молчать чем так умничать.
Да еще и на мертвом языке-прародителе ActionScript. - что конкретно тут самое мертвое? Некоторые вещи на ac2 делать гораздо быстрее и проще чем на ас3, тем более мне, дизайнеру.
Самое мертвое тут написание кода на кнопках. Мертв не AS2, а устаревшие древние методы, наследованные от AS1. Слушайте, что вам говорят, и думайте. А про AS3 кстати ничего не сказали.
Если у вас спросят как у дизайнера совета, почему неправильно работают фильтры в 4-м Фотошопе, и как это исправить, тогда и карты вам в руки в подобной ситуации.
- что конкретно тут самое мертвое? Некоторые вещи на ac2 делать гораздо быстрее и проще чем на ас3, тем более мне, дизайнеру.У вас ac2 и не пахнет, это даже не ac1, а ac0.5
unused_name
08.09.2009, 18:03
Ок, ас0,5, договорились. Вы тут все крутые и продвинутые, а я в каменном веке. Я наивно полагаю что чем код короче - тем удобнее. Я конечно могу сделать все на ас3, используя, например, ЭТО (http://demiart.ru/forum/index.php?showtopic=96189), но мой ущербный путь позволит мне сделать все намного быстрее. Я придумал как обойти описанную проблему, там и проблемы то никакой не было по сути, убрал я анимацию с таймлайна и прибавляю/отнимаю значения "х" теперь, как и делал до этого всегда. Но вот почему анимация не запускалась все еще интересно, может кто все-таки знает? Драг её убивает как-то?
Тебе нужно анимированный клип перетащить с одного места на другой, с помощью драг? Во время переноса, анимация клипа должна останавливаться, а после драга запускаться снова?
а я в каменном веке. Я наивно полагаю что чем код короче - тем удобнее. Я конечно могу сделать все на ас3Глаза откройте. От вас не требуют ас3, а говорят про банальный ас1, который такой же короткий, но удобнее по написанию и идеологии, чем код на кнопках. Многие просто игнорируют вопросы с кодом на кнопках, они не хотят в это копаться и создавать для себя проблемы.
unused_name
08.09.2009, 18:28
Тебе нужно анимированный клип перетащить с одного места на другой, с помощью драг? Во время переноса, анимация клипа должна останавливаться, а после драга запускаться снова? - да, именно так. UPD Сорри, не совсем так, анимация этого клипа происходит на таймлайне родительского клипа, т.е. сам он статичен, а вот запустить снова анимацию родителя не удается.
Добавлено через 9 минут
Глаза откройте. От вас не требуют ас3, а говорят про банальный ас1, который такой же короткий, но удобнее по написанию и идеологии, чем код на кнопках. Многие просто игнорируют вопросы с кодом на кнопках, они не хотят в это копаться и создавать для себя проблемы. - если убрать код со слайдера придется делать задержку при изменении координаты, и еще изменение этой задержки, что-бы получить движение с замедлением. Не то что-бы это очень сложно, но от этого код радувается раза в 3, и у меня больше шансов в нем запутаться. Я прекрасно воспринимаю логику програмирования, но у меня постоянно возникают проблемы с синтаксисом, поэтому так (через скрипты на кнопках и в кадрах) у меня получается все быстрее. Конечно это плохо, но пока это так.
так пойдет:
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()
если убрать код со слайдера придется делать задержку при изменении координатыНе нужно.
unused_name
08.09.2009, 18:47
в клипе mc сделана простая анимация, которая во время драга останавливается, а в состоянии покоя продолжает воспроизводить анимацию.
Прошу прощения, опоздал с апдейтом. Анимация слайдера находится в родительском клипе. Т.е. если сам слайдер движется, потом таскается - то, после того как его отпустили, больше он не движется, и никакие play(); и gotoAndPlay() его снова не запускают.
Надо же... А ведь вроде не так сложно разобраться.
Мультфильм идет сам по себе, кадр за кадром, и такие вещи, как положение объектов, в нем четко определено раз и навсегда.
Программа предполагает взаимодействие с пользователем, который вносит какие-то данные, и программа их обрабатывает. Программа таким образом меняет свои состояния не по таймеру, как мультфильм, а по событиям. Нажали кнопку - программа что-то сделала. И пока не нажмут еще раз, она не делает ничего.
Все возможные "кадры" в мультфильме определены заранее, и их - четко определенное количество. У программы же (я привел в пример Ворд) количество возможных изображений на экране не поддается вычислению. Вы никогда не напишите Ворд как последовательность кадров - их будет бесконечное количество))))
Итак вы нарисовали некий объект, и на таймлайне задали ему бегать справа налево и обратно. Отлично. Но при этом повесили на него код для вмешательства пользователя. В рантайме Вы берете этот объект и перемещаете его в новые координаты. Этот вариант НИКАК не может быть предусмотрен в мультфильме, где этот объект бегал справа налево, и был известен каждый кадр, и его положение в нем четко определено.
Так что всеже разберитесь и решите, мультик Вы делаете или программу. Забиты у Вас положения изначально раз и навсегда или они управляются пользователем. Удачи.
unused_name
08.09.2009, 18:53
Не нужно.
Но тогда какая разница, на слайдере этот код, или перед ним стоит attachMovie?
Я имел в виду что проблемы бы такой не возникло, будь анимация програмной, но она как-раз подразумевает все эти задержки, разве нет?
Добавлено через 4 минуты
В рантайме Вы берете этот объект и перемещаете его в новые координаты. Этот вариант НИКАК не может быть предусмотрен в мультфильме, где этот объект бегал справа налево, и был известен каждый кадр, и его положение в нем четко определено.
Так что всеже разберитесь и решите, мультик Вы делаете или программу. Забиты у Вас положения изначально раз и навсегда или они управляются пользователем. Удачи. - Что мешает вернуть объект к поведению заданному анимацией после нашего вмешательства? Я же пытаюсь принудительно это сделать, конкретной командой, конкретному клипу, а не заставить таймлайн вести себя по неведомому алгоритму.
Но тогда какая разница, на слайдере этот код, или перед ним стоит attachMovie?"одна ворона зеленая, другая направо".
Я имел в виду что проблемы бы такой не возникло, будь анимация програмной, но она как-раз подразумевает все эти задержки, разве нет?Какие еще задержки?
Добавлено через 4 минуты
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.gotoAndStop (targetFrame);
};
}
on (release, releaseOutside, rollOut) {
stopDrag ();
delete this.onMouseMove;
_root.rooms.play ();
}
Ок, вот смотрите. Альбом, в котором нарисован мультик - на каждом листе кадр, как мячик падает на асфальт и отпрыгивает. При пролистывании мы видим этот процесс, анимацию. Вы берете и вырезаете мячик из всех страниц и приклеиваете его в верхний левый угол (угол выбран фигурально!)))) И потом Вы спрашиваете - почему же при новом пролистывании альбома Вы не видите, как замечательно мячик падает и отпрыгивает. М?
unused_name
08.09.2009, 19:08
"одна ворона зеленая, другая направо".
Какие еще задержки?
setInterval в в конструкции mc._x++; - такие задержки. И интервал должен меняться, увеличиваясь пропорционально уменьшению расстояния до точки остановки, что-бы получился аналог ease. Может есть какие-то встроеные классы с реализацией движения с замедлением? типа filter.ease? Или есть более простой и грамотный способ?
Этот класс называется Tween.
setInterval в в конструкции mc._x++; - такие задержки.У вас какие-то проблемы с формулированием и выражением мыслей.
1. О setInterval нигде не шла речь
2. setInterval не может быть в конструкции mc._x++
3. Интервал вряд ли стоит менять, а вот шаг смещения _x вполне.
unused_name
08.09.2009, 19:21
Этот класс называется Tween. - вот за это спасибо, похоже то что надо =)
Добавлено через 8 минут
У вас какие-то проблемы с формулированием и выражением мыслей.
1. О setInterval нигде не шла речь
2. setInterval не может быть в конструкции mc._x++
3. Интервал вряд ли стоит менять, а вот шаг смещения _x вполне.
1. О setInterval я вел речь, когда говорил про задержки в циклах смещения по оси "х".
2. ??? setInterval задает паузу в каждой из итераций цикла, изменяющего значение х, почему его там не может быть?
3. Хм, можно пример? В принципе так наверное лучше чем через паузу...
Добавлено через 11 минут
Делаю через изменение шага смещения. Если не выйдет - буду ковырять tween. iNils спасибо :)
У вас мысли скачут, так, что со стороны получается белиберда: "одна ворона зеленая, другая направо".
unused_name
08.09.2009, 19:49
У вас мысли скачут, так, что со стороны получается белиберда: "одна ворона зеленая, другая направо".
- Вам показалось.
- Вам показалось.Не только мне. Но дело ваше, не мне же помощь нужна. :D
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.