| |
скажите, вот у меня есть два фрейма, в одном фрейме у меня клип, который при нажатии кнопки проигрывается до середины и переходит во второй фрейм. А во втором фрейме есть кнопка, которая ДОЛЖНА ВОЗВРАЩАТЬ В 1-ЫЙ ФРЕЙМ НА ТО САМОЕ МЕСТО, ГДЕ ОСТАНОВИЛСЯ КЛИП И ПРОИГРАТЬ ЕГО ДАЛЬШЕ. А сделать я хочу вот что - имеются картинки, которые при нажатии кнопок соответствующих должны сменяться по принципу - взад-вперед. Но вот беда, хочу сделать так -нажал кнопку, картинка уезжает вправо и тут же приезжает следующая картинка слева. Но я уже задолбался, какой код нужно вешать на кнопки, чтоб с помощью их проигрывался один и тот же клип с уезжающей-приезжающей картинкой, а не заморачивать с кучей кусков клипов (Actionscript2.0) |
|
|
|
советую не прорисовывать анимацию в клипах. ты можешь решить это через програмное создание анимации. и уложишься в один кадр.
воспользуйся примерно таким кодом
stop(); import mx.transitions.Tween; import mx.transitions.easing.*; button_right.onPress = function() { image1.varTween.stop(); image1.varTween = new Tween(image1, "_x", Regular.easeOut, image1._x, 500, 0.5, true); //500 здесь значение, на которое переместится твоя картинка(image1) image2.varTween.stop(); image2.varTween = new Tween(image1, "_x", Regular.easeOut, image1._x, 0, 0.5, true); //так можно сформировать здесь какой-нибудь счётчик, который при нажатии //будет увеличиваться или уменьшаться и от его значения будет зависеть, //какую картинку перемещать. }А дальше работает фантазия))
Rain... спасибо, премного благодарен, попробую. То есть Image1- название моей первой картинки, 0.5 - это что, скорость? Теоретически следуя коду можно в одном фрейме просто расположить все картинки которые будут двигаться, я так понял?
image1 - да, это имя картинки если быть точнее intrance name (то есть, нужно будет кртинки в клипы преобразовать, так как у bitmap объектов такого параметра нет). Совершенно верно, все картинки располагаются в одном кадре, а двигаются уже програмно. Да, 0.5 - это скорость, если мне не изменяет память. в секундах.
Хм... вы знаете, писал ваш код сам, потом просто вставил его и изменил имена у кнопки и картинки... все равно выдает ошибки There is no method with the name 'OnEnterFrameBeacon'
There is no method with the name 'BroadcasterMX'
There is no method with the name 'OnEnterFrameBeacon'
причем нажимаю на эти ошибки и у меня вылезает окошко с названием Tween с кодами, которых я и близко не писал(((
Подскажите пожалуйсто, может я делаю че не так? У меня если честно возникают вопросы в частности в строчке import mx.transitions.easing.*; что означает * и почему за названием картинки идет какой то странный обработчик varTween, который к тому же не подсвечивается(((
В коде моём была небольшая ошибка, однако даже с ней всё должно было работать.
Tween - это функция, создающая анимаю на програмном уровне (в нашем случае),
так же ей можно регулировать все свойства объекта,
а не только положение в пространстве. varTween не подсвечивается, потому что это просто переменная,
дальше мы присваиваем ей значение new Tween();
Почему у вас мой код не работал, понимаю с трудом, однакое есть подозрение. что вы создали проект нового документа ActionScript3.0, а не 2.0
В коде есть строчки
image1.varTween.stop();Они, по совести нафиг не нужны(имхо). Я создал простеньких документик с двумя картинками и кнопками и цифры настроил по своему, вот, поковыряйтесь, всё до дикости просто. не думаю, что должны возникнуть проблемы. исходник тут
Возникнут вопросы. обращайтесь))
увы, но не поверите, я и сам не знаю в чем проблема была, поскольку вбивал все как вы писали, а в AS 3.0 я ниче никогд не делал поэтому и создаю всегда все проекты только в 2.0)) сейчас тогда попробую еще раз, но пока отличий в коде особо не вижу...
еще я пробовал как по Гурскому :
Btn.onRelease = function(){
_root.onEnterFrame = function(){
image._x+=-10
};
};
но только само собой картинка как пошла в бок так и не остановилась)))
Кажется я разобрался в чем проблема, правда я не понял, чем это обусловлено вообще??... вобщем в CS5 какая то новая фишка - при нажатии кнопки автоформат для проверки синтаксиса он почему теперь стал { переносить на след строчку... вот я не нажимая автоформата написал ваш код и у меня тоже все заработало.... Муть какая то....
А вопросик еще есть - а как зациклить это действие, что бы картинки перемещались при нажатии кнопки как в первый раз на 500, потом нажать еще раз на ту же кнопку - и она еще переместилась в том же направлении, и еще и тд?
Если речь идёт об одной и той же картинки, попробуй задать переменную, поставь её вместо параметра, и при каждом нажатии клавиши прибаляй значение этой переменной. Если речь идёт о том, что бы потом передвинуть новую картинку. нужно попробовать создать такой же счётчик, меняющийся при надатии на клавишу, потом создать переменную типа String и в неё забивать имена картинок как-то типо так var nameimg:String = "image"+i;
где i - это и будет наш счётчик. А потом уже в Tween подставлять не имя картинки, а эту переменную. Сам не пробовал так делать, но в пхп это бы точно работало.
Попробуй.
Хотя, нет, так не прокатило, надо подумать...
если честно, то в строчке image1.varTween = new Tween(image1, "_x", Regular.easeOut, image1._x, 500, 0.5, true); я мало что понял)) Для меня тут многое не понятно, в том числе и сам mx.transitions.easing.* что делает мне тоже не понятно. Вот если бы var b=... тогда понятно - создается новая переменная, а то что в скобках у вас написано для меня темный лес))) Поэтому соответственно и что тут принимать за переменную i во всем этом мне тоже не понятно)) Принцип только могу понять, то, что счетчик должен быть, однако это тоже вопрос - какой? Ведь счетчик для обычных чисел вполне понятен и прост 1,2,3... а для разных картинок с разными именами как сделать счетчик который понимал бы что это последовательный ряд?...
вот тут-то я сейчас и завис. то, что в скобках, просто указывает на то,
что мы делаем с твоим объектом, если есть желание разобраться, волшебный F1))
жаль только на русском по экшенскрипт 2 его нету.
попробуй разобраться сам, я тоже буду думать. авось придумаю)))
я так полагаю надо как то задействовать return и использовать не _x, а какой то дельта x, что ли... Просто тут метод перемещения "куда", а нет похожего метода "на сколько"?
никогда не задумывался над этим, можно просто задать переменную, которую увеличивать на какую-то виличину каждый раз и использовать её как параметр "куда".
по поводу Tween в принципе, есть не плохая тема на этом форуме почитайте
да я хелп почитал как вы посоветовали, только там че то маловато и не расписывается ниче, а за ссылку спасибо)) тут и то больше рассказано
я тут посоветовался со знающими людьми и вобщем выянили, что все куда проще чем мы с вами тут накручиваем))
вобщем в строчке
image1.varTween = new Tween(image1, "_x", Regular.easeOut, image1._x, 500, 0.5, true);
image1._x - это начальная координата, а 500 - конечная, а я сначала думал что image1._x это повторение фразы, что и с чем мы должны производить)
в результате исходя из этих соображений мы пишем следущее
image1.varTween = new Tween(image1, "_x", Regular.easeOut, image1._x, image1._x+500, 0.5, true);
и все ништяк
Ну вот видишь, как всё замечательно!)) Удачи в дальнейшем)
На этом месте был комментарий, но admin его удалил, потому что, цитирую: «Комментарий не соответствует теме».
Тестовый комментарий