PDA

Просмотр полной версии : Полукруглое меню


Dennix
12.08.2006, 17:55
Добрый день!

Подскажите, пожалуйста, как сделать простенькую менюшку как на сайте http://cyclog.wise-graphics.net такую полукруглую.

Может кто-нибудь выложет исходник - буду благодарен. Или хотя бы методы поподробней. Но судя по всему тут немного делать, знать бы как.

Спрашивал в ветке "Для начинающих", но у меня не получилось сделать так как мне ответили. Мне кажется, что для специалистов это несложно. Ну не получается у меня разобраться. Буду благодарен за любую помощь.

Спасибо.

BigDan
12.08.2006, 21:52
Создаешь круг в нем делаешь кнопки. Создаешь маску чтоб круг стал полукругом. Функция которая отвечяет за вращение.
function round(speed){
mc._rotation+=speed;
}
Далее будем проверят растояние от курсора до крайних точек.
mc.onRollOver=function(){
var speed=10*((_ymouse-mc._y)/(mc._height/2));
timer=setInterval(round,10,speed);
}
mc.onRollOut=function(){
clearInterval(timer);
}

Dennix
14.08.2006, 19:24
Не работает! Точнее не совсем... Так мне уже советовали. Когда курсор находится на мувике он крутится только в одну сторону. Т.е. нельзя изменить направление движения. Так как же все-таки сделать правильно?

DarkLight
14.08.2006, 19:28
Ставишь невидимые клипы в левой и правой части и ставишь обработчики на них - у одного +=speed , у другого -=speed

Dennix
15.08.2006, 14:04
Не получается... блин. Исправьте пожалуйста мой файлик, который выше. Все равно не получается также как на http://cyclog.wise-graphics.net

DarkLight
15.08.2006, 14:36
14980
...пока с одной скоростью...
Считать там надо не разницу у, а расстояние от центра круга, это уже легко...
Клипы _1 и _2 подгоняешь по нужным зонам, делаешь полностью прозрачными - и готово
Если не в ту сторону крутится - поменяй 5 и -5 местами

CCCPirate
15.08.2006, 14:48
смотри, хошь доделывай:

14981

удачи!

DarkLight
15.08.2006, 15:00
Исправленный вариант:
14982

Dennix
15.08.2006, 16:00
Спасибо большое вам ребята! DarkLight и CCCPirate - спасибо! Сейчас буду разбираться.

Dennix
15.08.2006, 16:36
Фак... только теперь под прозрачными мувиками не работают кнопки на круге... я наверно совсем туп...

DarkLight
15.08.2006, 16:40
Нужно положить прозрачные клипы под круг (слой в самый низ, но маска на него не должна действовать) - и все будет ОК
Че-то забыл учесть наличие кнопок)))

Dennix
15.08.2006, 16:57
Неа...все равно... вот посмотри...

DarkLight
15.08.2006, 17:04
А что все равно? На кнопках нет кода...А как только я добавляю туда код - все работает...

CCCPirate
15.08.2006, 17:26
Фак... только теперь под прозрачными мувиками не работают кнопки на круге... я наверно совсем туп...

А ты как хотел? Событие он реализ - закрывает событие для нижележащи клипов, я просто отталкивался от твоег исходника, теперь я сделал по своему на:

сорри не то приаттачил, бери этот :14987

Dennix
15.08.2006, 17:40
А что все равно? На кнопках нет кода...А как только я добавляю туда код - все работает...

У меня нет. Не работает, блин... :((

DarkLight
15.08.2006, 17:50
Я только что открыл несколько Флешеров. Все ОК. Какая версия Флеша? Флеш Плеера?

CCCPirate
15.08.2006, 18:12
:bye: Не парь мозги! Сделай как в моем исходнике выше

Dennix
15.08.2006, 18:13
Флеш 8 и плеер 8

DarkLight
15.08.2006, 18:20
гетУРЛ у меня работало, если только браузер уже был открыт...но это уже другой вопрос...поставь трейсы - трейсы работают.
Кнопки у меня работают. Или нужно чтобы при наведении на кнопку круг не переставал вращаться?

Dennix
15.08.2006, 18:22
Конечно не переставал! Кнопки ведь будут на всем круге, а как к другим добраться... Точно так же как на сайте выше который я указал.

DarkLight
15.08.2006, 18:35
function round(speed):Void {
var speed = _root.dir1*Math.min(10/(_root._2._x-_root._xmouse), 40);
_root.mc._rotation += speed;
}
_root._1.onRollOver = function():Void {
_root.dir1 = 1;
clearInterval(timer);
timer = setInterval(round, 10, speed);
};
_root._2.onRollOver = function():Void {
_root.dir1 = -1;
clearInterval(timer);
timer = setInterval(round, 10, speed);
};
Этот код стабильнее и работает почти как надо

DarkLight
15.08.2006, 18:40
А на том сайте сделано помойму так: в момент отпускания кнопки мыши проверяется, не была ли нажата какая-нибудь кнопка...Если надо, набросаю подобный код

DarkLight
15.08.2006, 18:53
14989
Вот...Обрати внимание, что на том сайте нет состояния овер у кнопок...
Поэтому я наставил стопов там...долго было кадры удалять...зеленый сектор трейсит...

правильный код:
function round(speed):Void {
var speed = _root.dir1*Math.min(10/(_root._2._x-_root._xmouse), 40);
_root.mc._rotation += speed;
}
_root._1.onRelease = rel;
_root._2.onRelease = rel;
_root._1.onRollOver = function():Void {
_root.dir1 = 1;
clearInterval(timer);
timer = setInterval(round, 10, speed);
};
_root._2.onRollOver = function():Void {
_root.dir1 = -1;
clearInterval(timer);
timer = setInterval(round, 10, speed);
};
for (var i in mc.buttons) {
mc.buttons[i].gotoAndStop(1);
}
function rel() {
for (var i in mc.buttons) {
if (mc.buttons[i].hitTest(_root._xmouse, _root._ymouse, true)) {
trace("ss")
mc.buttons[i].onRelease();
}
}
}
mc.buttons._btnx.onRelease = function() {
trace("OK");
};;
Теперь заработало норм(прозрачные клипы снова вверх)

Dennix
15.08.2006, 20:22
Ну люююди, вы же можете, помогите пожалуйста...

DarkLight
15.08.2006, 20:26
Что случилось? В krugN вставляешь код из предыдущего моего поста вместо того что был, переставляешь слой с прозрачными клипами наверх...После этого зеленая кнопка работает, и все вроде как надо. Чтобы работали другие нужно дать им инстанс неймы и написать онРелизы.
В чем проблема?

Dennix
15.08.2006, 20:48
Нет, все нормально... я просто не видел что вы на 3 странице пишите... сорри...