![]() |
загадочный глюк или я в OnClipEvent
Есть клип clip1, который должен, в зависимости от нажатия кнопок, перемещаться...
код клипа: onClipEvent (enterFrame) { if (_root.menumove == 1) { if (_x>-290) { _x -= 37; _y += 5; _xscale = 70; _yscale = 70; clip1.but.gotoAndStop(3); } } else if (_root.menumove == 2) { xarmov = [-290, -280, -270, -200, -100, -50, -40, -10, -5, 0]; _x = xarmov[i++]; _xscale = 80; _yscale = 80; _root.logomenu.menu.gotoAndStop(2); } } кнопка один говорит _root.menumove == 1 и клип замечательно перелетает до _х=-290 и уменьшается в размерах до _xscale = 70; _yscale = 70; , кнопка два, которая находится в клипе clip1.but, которая говорит _root.menumove == 2 и клип перемещается на заданное ему место т.е. на _х=0 и увеличивается размерах до _xscale = 80; _yscale = 80; снова нажимаю на кнопку один, клип снова перемещается на _х=-290, и уменьшается в размерах до _xscale = 70; _yscale = 70; я снова нажимаю на кнопку два и клип НИКУДА не перемещается, но в размерах увеличивается, что уже явно говорит, что он схавал что переменная _root.menumove изменилась на значение 2. Но почему вдруг он перестает перемещаться??? ЧТо я уже напортачил?? Извините за длинное объяснение, но пытался поподробнее... Спасибо за ответ!!! :confused: |
вот я щас должен сидеть и представлять, как там у тебя "раз-два".
сорс выложи, злодей :) |
че за изврат? :)
|
И зачем я столько объяснял... впрочем, следуя объяснениям глядите исходник...
|
Вложений: 1
а вот и он :)
|
ХЕЕЕЛП!
ХЕЕЕЕЕЛП!!! Ауу!!!! :eek:
Неужели никто не знает?? ИЛи просто никто не смотрит ?:) Глюк! Или я ступил! В любом случае как решить??? Мерси |
а мне просто лень :)
|
2Usnul: что с тобой случилось? То ты над людями издеваешься, то лень... с ума сбежал или ранний климакс?
Ну помогите же люди, я уже неделю над этим бьюсь..... :( |
Лююююдди!!!!!!!!!!!!!
Вы где!!??? У меня уже крыша тихонько едет... может массивы так использовать нельзя?????? Неужели вымерли добрые самаритяне?? |
Брррррр! Я только на сорс глянул - плёхо стало. Разобраться в этом можешь только ты. Но опыт мне подсказывает, что непорядок с переменной i.
|
Лень объяснять в чём была причина, просто посмотри исправленный код. :)
если конечно я правильно понял как должна двигатся менюшка... з.ы.: пользуйся trace(message); - помогает очень даже сдорово!! |
Вложений: 1
Блин глючит у меня нет, файл приложил - а он без файла вылез :)
|
DUDE, мне черкани в двух словах - в чем там. а то так в лооом смотреть:)
|
ну не логично построено движение меню т.е.:
туда всё правильно сделано а обратно я вообще не понял откуда и зачем там i++ и совершенно не понятно зачем так извращатся: var = [600, 450, 300, 250, 150, 100, 50]; _x =var; зачем это я вообще не понял :) |
Вложений: 1
2DUDE:
спасибо тебе конечно за x<0 :)) Но меня как раз интересует именно изврат с точками :) Потому как мне нужна определенная траектория. ВОт прилагаю доработанный исходник, я было подумал и добавил myArray.lenth (как, кстати мне когда-то писал Sergey"iLoveYou") но что с ним, что без него.... все равно не пашет... вот... ИЛи Вы в курсе какого-то более простого программного движения по траектории??? Спасибо |
и тишина........ :(
|
тебе чего нада? ты конкретно скажи, а то блин "нате исходу, гляньте что неработает, а я пока пойду покурю" :) если хочешь сделать движение по набору координат, так и скажи, или что с менюшкой с самой не так?
|
После того, как ты нажал на кнопку два и твой клип пробежал траекторию по _х, переменная i убегает далеко-далеко, т.к. _root.menumove так и остаётся равной двум ( пока не нажал, кнопку 1).... так что (один из вариантов) - сделай i глобальной и повесь на кнопку 2 дополнительный код
... _root.i=0; ... Должно заработать... (Правда не проверял.... ) Удачи... Suhoff |
2Usnul: ты что думаешь, я тут фигней страдаю, нате мол парьтесь!!?? ДА у меня уже крышу тихонько срывает... я ж не программист (я лингвист) поэтому разбираюсь во всем с нуля и перед тем как написать на форум испробовал все что нашел! И только потом спрашиваю профессионалов! Блин...
:mad: 2Suhoff: вот, спасибо что откликнулся, сейчас буду разбираться что ты написал... но что-то типа этого я и предполагал... огромное спасибо ;) |
мне 16 лет и я даже не лингвист :)
|
2USnul: снимаю шляпу! Но это не меняет дела и я от этого лучше разбираться в этом не стану :) Просто помни. что я сюда пишу только в последнем случае! :)
Кст, да мне нужно движение по координатам... |
залез я в source2.fla и слегка офигел от способа доставать до правого уха левой пяткой :)
но товарисч Сухов мыслит в правильном направлении... открываем source2.fla и заходим в скрипт который лежит на: _root.logomenu.field добавляем туда одну строчку: i = 0; сразу после строчки: if (_root.fieldmove == 1) потом заходим в скрипт который лежит на: _root.logomenu.menulogo и добавляем туда одну строчку: i = 0; сразу после строчки: if (_root.menumove == 1) ...и о, чудо ! :)) сколько ни кликай по кнопкам - все работает одинаково... не факт что это все что нужно, но уже это достаточно положительный симптом :)) |
ну вот, сказал бы раньше чего надо, и до Нокса бы дело не дошло... :)
|
NOx!!!! :) Хааааааа... я тут тихонько валяюсь :) и ржу под столом :) Изощренный способ поиздеваться :) А что не так? НУ в плане почему извращенный, просто если использовать обычное передвижение из серии
if(_x<41){_x+=5;} то клип может перескочить за 41! Т.е. остановится не точно, если он приплюсует очередную 5-ку то будет 40, т.е. ему еще можно двигаться, а в результате он остановится не на 41 а на 45! :) вот я и попробовал этого избежать... видимо через ж., но другого способа не придумал... |
чууувааак... я нихрена не понял что ты сказал, но ты достучался до моего сердца... ©
:))))) |
:) сердце ? Эка я дал...
Ну что ж тут непонятного! а) почему ты офигел от этого способа доставания до уха? б) чтобы передвинуть объект А на точку Б, мы обычно делаем так: if(objectA._x<точки Б){ objectA._x+=5; } таким образом объект А будет двигаться пока его _х не будет больше точки Б, но поскольку объект А движется с шагом 5 пикселей, то он попросту может проскочить точку Б на несколько пикселей, а если увеличить этот шаг скажем до 35, то он существенно проскакивает! Как этого избежать? Используя перебор значений массива, который в данном случае является координатой х. вот.. :) вроде так! |
а знаешь, это и вправду не так умно :) ...
|
А знаешь, есть такой прикол: надо клип ставить таким образом
чтоб у тебя не перескакивало :) Т.е.: если у тебя шаг 5 пикселей, а нужно быть например на 34 пикселе, то надо ставить твой ролик (который двигается), в руте на либо на -1 пиксель, либо 11, либо 21 и т.д. Тогда ничего перескакивать не будет, мною проверено :D |
еще одна мудрость. чтобы не перескакивало, надо использовать моушн твин. тогда точно не перескочит.
|
2Usnul & Serge: вы как обычно советчики просто суперские!
2Dude: спасибо.... но а если мне нужно именно та скорость которая не сочетается? Вы можете не альтернативу давать. а объяснить почему массив нецелесообразен и как делать точно? |
ну ты не кипятись. просто нужно прощитывать расстояние оставшиеся до достижения точки по обеим осям, и если оно меньше "шага",то добавлять его, а не "шаг", андэстэндэбл?
|
2Usnul: чем дальше, тем больше я сомневаюсь в твоем возрасте :) ну или ты вундеркинд :) ЧТо в переводе с немецкого: удивительный ребенок.
Ну хорошо, это понятно, ну а если траектория не просто прямо или по-диагонали. а скажем объект движется по петле. а доходя до конца петли по ней же возвращается назад? |
Задавай уравнение движения параметрически и не парься. Параметром может являться время, может шаг (скажем 1/100 пути).
В общем виде это выглядит так: _x=f1(t) _y=f2(t) t={0...1} - параметр f1, f2 - функции Тогда можно извращаться, как угодно (в смысле двигаться по любой кривой) и всегда при t=1 окажешся точно в конце пути. А "параметрические уравнения" можно нарыть поиском в том же yandex. |
о, да, параметрические... осталось еще выяснить что это и пройти курс программирования и высшей математики... :(
|
Vrefr, я уже,честно говоря, забыл, что те нужно - как-то отошли от темы. Напомни, а? :)
А то что я советы вредные даю - так это не со зла. Обещаю, постараюсь помочь. |
по петле? это запросто :)
_root.massx=[10,20,30,40,50,40,30,20,10] _root.massy=[100,90,80,90,100,110,120,110,100] _root.speed=30 _root.nextposition=0 _root.thisx=0 _root.thisy=90 _root.mc._x=_root.thisx _root.mc._y=_root.thisy mc.onEnterFrame=function(){ if(_root.mc._x!=_root.massx[_root.NextPosition] and _root.mc._y!=_root.massy[_root.NextPosition]){ _root.mc._x+=(_root.massx[_root.NextPosition]-_root.thisx)/_root.speed _root.mc._y+=(_root.massy[_root.NextPosition]-_root.thisy)/_root.speed } else{ if(_root.nextposition<_root.massx.length and _root.nextposition<_root.massy.length){ _root.thisx=_root.mc._x _root.thisy=_root.mc._y _root.nextposition+=1 } else{ trace("end of coordinats Array") } } } вот написал, не обижайся что не пашет, но зато дает представление :) я его почти полчаса писал :( и вдабавок спать хочется, короче не серчай :) завтра будет время, разберусь :) |
| Часовой пояс GMT +4, время: 09:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.