Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   загадочный глюк или я в OnClipEvent (http://www.flasher.ru/forum/showthread.php?t=45415)

Vrefr 29.05.2003 23:50

загадочный глюк или я в 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:

iLoveYou 29.05.2003 23:56

вот я щас должен сидеть и представлять, как там у тебя "раз-два".
сорс выложи, злодей :)

Usnul 30.05.2003 00:28

че за изврат? :)

Vrefr 30.05.2003 00:59

И зачем я столько объяснял... впрочем, следуя объяснениям глядите исходник...

Vrefr 30.05.2003 01:02

Вложений: 1
а вот и он :)

Vrefr 30.05.2003 20:23

ХЕЕЕЛП!
 
ХЕЕЕЕЕЛП!!! Ауу!!!! :eek:
Неужели никто не знает?? ИЛи просто никто не смотрит ?:)
Глюк! Или я ступил! В любом случае как решить???
Мерси

Usnul 30.05.2003 20:27

а мне просто лень :)

Vrefr 30.05.2003 20:29

2Usnul: что с тобой случилось? То ты над людями издеваешься, то лень... с ума сбежал или ранний климакс?
Ну помогите же люди, я уже неделю над этим бьюсь..... :(

Vrefr 30.05.2003 21:44

Лююююдди!!!!!!!!!!!!!
Вы где!!???
У меня уже крыша тихонько едет... может массивы так использовать нельзя??????
Неужели вымерли добрые самаритяне??

iLoveYou 30.05.2003 22:28

Брррррр! Я только на сорс глянул - плёхо стало. Разобраться в этом можешь только ты. Но опыт мне подсказывает, что непорядок с переменной i.

DUDE 30.05.2003 23:19

Лень объяснять в чём была причина, просто посмотри исправленный код. :)

если конечно я правильно понял как должна двигатся менюшка...

з.ы.: пользуйся trace(message); - помогает очень даже сдорово!!

DUDE 30.05.2003 23:20

Вложений: 1
Блин глючит у меня нет, файл приложил - а он без файла вылез :)

iLoveYou 30.05.2003 23:38

DUDE, мне черкани в двух словах - в чем там. а то так в лооом смотреть:)

DUDE 31.05.2003 01:00

ну не логично построено движение меню т.е.:
туда всё правильно сделано а обратно я вообще не понял откуда и зачем там i++ и совершенно не понятно зачем так извращатся:
var = [600, 450, 300, 250, 150, 100, 50];
_x =var;
зачем это я вообще не понял :)

Vrefr 31.05.2003 02:27

Вложений: 1
2DUDE:
спасибо тебе конечно за x<0 :)) Но меня как раз интересует именно изврат с точками :)
Потому как мне нужна определенная траектория.
ВОт прилагаю доработанный исходник, я было подумал и добавил myArray.lenth (как, кстати мне когда-то писал Sergey"iLoveYou") но что с ним, что без него.... все равно не пашет...
вот... ИЛи Вы в курсе какого-то более простого программного движения по траектории???
Спасибо

Vrefr 31.05.2003 14:29

и тишина........ :(

Usnul 31.05.2003 20:17

тебе чего нада? ты конкретно скажи, а то блин "нате исходу, гляньте что неработает, а я пока пойду покурю" :) если хочешь сделать движение по набору координат, так и скажи, или что с менюшкой с самой не так?

Suhoff 01.06.2003 00:42

После того, как ты нажал на кнопку два и твой клип пробежал траекторию по _х, переменная i убегает далеко-далеко, т.к. _root.menumove так и остаётся равной двум ( пока не нажал, кнопку 1).... так что (один из вариантов) - сделай i глобальной и повесь на кнопку 2 дополнительный код
...
_root.i=0;
...

Должно заработать... (Правда не проверял.... )

Удачи... Suhoff

Vrefr 01.06.2003 17:14

2Usnul: ты что думаешь, я тут фигней страдаю, нате мол парьтесь!!?? ДА у меня уже крышу тихонько срывает... я ж не программист (я лингвист) поэтому разбираюсь во всем с нуля и перед тем как написать на форум испробовал все что нашел! И только потом спрашиваю профессионалов! Блин...
:mad:
2Suhoff:
вот, спасибо что откликнулся, сейчас буду разбираться что ты написал... но что-то типа этого я и предполагал... огромное спасибо ;)

Usnul 01.06.2003 21:15

мне 16 лет и я даже не лингвист :)

Vrefr 02.06.2003 16:49

2USnul: снимаю шляпу! Но это не меняет дела и я от этого лучше разбираться в этом не стану :) Просто помни. что я сюда пишу только в последнем случае! :)
Кст, да мне нужно движение по координатам...

Nox Noctis 02.06.2003 19:47

залез я в source2.fla и слегка офигел от способа доставать до правого уха левой пяткой :)
но товарисч Сухов мыслит в правильном направлении...

открываем source2.fla и заходим в скрипт который лежит на:
_root.logomenu.field
добавляем туда одну строчку: i = 0; сразу после строчки: if (_root.fieldmove == 1)
потом заходим в скрипт который лежит на:
_root.logomenu.menulogo
и добавляем туда одну строчку: i = 0; сразу после строчки: if (_root.menumove == 1)

...и о, чудо ! :)) сколько ни кликай по кнопкам - все работает одинаково... не факт что это все что нужно, но уже это достаточно положительный симптом :))

Usnul 03.06.2003 01:01

ну вот, сказал бы раньше чего надо, и до Нокса бы дело не дошло... :)

Vrefr 04.06.2003 12:15

NOx!!!! :) Хааааааа... я тут тихонько валяюсь :) и ржу под столом :) Изощренный способ поиздеваться :) А что не так? НУ в плане почему извращенный, просто если использовать обычное передвижение из серии
if(_x<41){_x+=5;}
то клип может перескочить за 41! Т.е. остановится не точно, если он приплюсует очередную 5-ку то будет 40, т.е. ему еще можно двигаться, а в результате он остановится не на 41 а на 45! :) вот я и попробовал этого избежать... видимо через ж., но другого способа не придумал...

Nox Noctis 04.06.2003 12:47

чууувааак... я нихрена не понял что ты сказал, но ты достучался до моего сердца... ©
:)))))

Vrefr 04.06.2003 13:16

:) сердце ? Эка я дал...
Ну что ж тут непонятного!
а) почему ты офигел от этого способа доставания до уха?
б) чтобы передвинуть объект А на точку Б, мы обычно делаем так:

if(objectA._x<точки Б){

objectA._x+=5;
}
таким образом объект А будет двигаться пока его _х не будет больше точки Б, но поскольку объект А движется с шагом 5 пикселей, то он попросту может проскочить точку Б на несколько пикселей, а если увеличить этот шаг скажем до 35, то он существенно проскакивает!
Как этого избежать? Используя перебор значений массива, который в данном случае является координатой х.
вот.. :) вроде так!

Usnul 04.06.2003 21:16

а знаешь, это и вправду не так умно :) ...

DUDE 04.06.2003 23:05

А знаешь, есть такой прикол: надо клип ставить таким образом
чтоб у тебя не перескакивало :)
Т.е.: если у тебя шаг 5 пикселей, а нужно быть например на 34 пикселе, то надо ставить твой ролик (который двигается),
в руте на либо на -1 пиксель, либо 11, либо 21 и т.д. Тогда ничего перескакивать не будет, мною проверено :D

iLoveYou 05.06.2003 00:55

еще одна мудрость. чтобы не перескакивало, надо использовать моушн твин. тогда точно не перескочит.

Vrefr 05.06.2003 15:27

2Usnul & Serge: вы как обычно советчики просто суперские!
2Dude: спасибо.... но а если мне нужно именно та скорость которая не сочетается?
Вы можете не альтернативу давать. а объяснить почему массив нецелесообразен и как делать точно?

Usnul 06.06.2003 01:35

ну ты не кипятись. просто нужно прощитывать расстояние оставшиеся до достижения точки по обеим осям, и если оно меньше "шага",то добавлять его, а не "шаг", андэстэндэбл?

Vrefr 06.06.2003 13:56

2Usnul: чем дальше, тем больше я сомневаюсь в твоем возрасте :) ну или ты вундеркинд :) ЧТо в переводе с немецкого: удивительный ребенок.
Ну хорошо, это понятно, ну а если траектория не просто прямо или по-диагонали. а скажем объект движется по петле. а доходя до конца петли по ней же возвращается назад?

uri-uri 06.06.2003 15:04

Задавай уравнение движения параметрически и не парься. Параметром может являться время, может шаг (скажем 1/100 пути).
В общем виде это выглядит так:
_x=f1(t)
_y=f2(t)
t={0...1} - параметр
f1, f2 - функции

Тогда можно извращаться, как угодно (в смысле двигаться по любой кривой) и всегда при t=1 окажешся точно в конце пути.
А "параметрические уравнения" можно нарыть поиском в том же yandex.

Vrefr 06.06.2003 15:59

о, да, параметрические... осталось еще выяснить что это и пройти курс программирования и высшей математики... :(

iLoveYou 07.06.2003 00:14

Vrefr, я уже,честно говоря, забыл, что те нужно - как-то отошли от темы. Напомни, а? :)
А то что я советы вредные даю - так это не со зла. Обещаю, постараюсь помочь.

Usnul 07.06.2003 03:21

по петле? это запросто :)
_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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.