Просмотр полной версии : Как реализовать меню?
Мне дали следующее описание меню:
"На странице пульсируют квадраты меню. При этом по очереди квадраты увеличиваются. После того, как квадрат достиг своего максимального размера, вся система останавливается, а на выделенном квадрате появляется название раздела. Потом обрат и к другому квадрату.
Если навести мышью на любой квадрат, движение всего цикла всех квадратов проходит до момента соответсвия максимального размера выделенного квадрата. Если нажать на квадрат, то грузиться соответсвующий раздел. Если убрать мышь, то картинка пропадает,система прододжает свое цикличное движение-пульсацию."
Я сломала голову, думая как...
Есть кнопки - квадраты. Есть мувики. Есть общий мувик, в котором происходит пульсация. В ключевых точках (максимальный размер квадрата) делаем проверку, над кнопкой ли мышь. Если да - стоп, если нет - движем дальше.
Но у меня не выходит это реализовать. Где-то я не продумываю, что -то упускаю. Но что? Что в моей логике не так?
чтобы тебе помочь интересует один вопрос ты собираешся картинки грузить из вне или держать в самой флешке ?
ну само сабой какой версией флеша ты пользуешся ?
это ктому в какой примеры делать.
P.S. проверку есть ли мышь над квадратом можно делать 3 вариантами
1. (нестобилен) проверка на onRollOut и onRollOver. в твоем примере использовать вообще нерекомендую , на счет этого я еще с iNilsam спорил .
2. проверка на хит тест , для прямоугольных обьектов само великолепие )
3. мой любимый , проверка координат, очень стабилен .
1. Это чем же он нестабилен?:)
2. А что, для непрямоугольных чем-то хуже?:)
3. О да, особенно для некруглых и непрямоугольных вариантов...
автор жжот. других слов у меня нет, сорри
2Antares для нерямоугольных нужно хит тест с гетбаунсом обьединять , одним хиттестом не ограничешся .
P.S. Ты ведь знаеш все это чего смеешся ?
K.A.T.A.F.A.L.K.E.R
07.03.2006, 02:49
детский вариант решения (если правильно понял задачу): к примеру, если в меню будет N элементов, а сама анимация "увеличение-уменьшение" занимает m кадров, отступаем (N-1)*m кадров от начала а дальше лепим саму анимацию. Скрипт после такого приобретает вид вроде
for(var i:Number=0;i<5;i++){
_root.attachMovie("mov","mov"+i,i);
_root["mov"+i]._x = (_root["mov"+i]._width+20)*i + 100;
_root["mov"+i]._y = 100;
_root["mov"+i].gotoAndPlay(80-i*20);
_root["mov"+i].onEnterFrame = function(){
if(this._currentframe==90 && this.hitTest(_xmouse,_ymouse,true))
for(var i in _root)
_root[i].stop();
}
_root["mov"+i].onRollOut = function(){
for(var i in _root)
_root[i].play();
}
_root["mov"+i].onReleaseOutside = _root["mov"+i].onRollOut;
}
чтобы тебе помочь интересует один вопрос ты собираешся картинки грузить из вне или держать в самой флешке ?
ну само сабой какой версией флеша ты пользуешся ?
это ктому в какой примеры делать.
версия MX.
картинки будут лежать во флешке.
1. (нестобилен) проверка на onRollOut и onRollOver. в твоем примере использовать вообще нерекомендую , на счет этого я еще с iNilsam спорил .
Так и не вышло же. Спора вашего я не видела, но это первое, что пришло в голову. И не особо удачное, так как сама же и запуталась в реализации
2. проверка на хит тест , для прямоугольных обьектов само великолепие ).
А что это значит?
3. мой любимый , проверка координат, очень стабилен .
А это идея... и замечательная!
Попробую
Не совсем так. Дергающиеся квадраты (они еще и в пространстве "колбасятся") должны останавливать свою пульсацию, если мышка над одним из квадратов. и опять продолжать движение, если мышка убрана.
Тут просто представить себе что-то лучше класса с onRollOver / onRollOut сложно, какие проверки координат...
P.S. Ты ведь знаеш все это чего смеешся ?
Да потому что вы пытаетесь почесать пяткой ухо, хотя руки у вас развязаны.
2Damira
ты здесь )
вот примеры один под 8й другой под 6й )
посмотри подправь если что не так понял но вроде все так )
zz = 0;
for (var i:Number = 0; i<4; i++) {
_root.attachMovie("kvadrat", "kvadrat"+i, i+3);
_root["kvadrat"+i]._x = 275;
_root["kvadrat"+i]._y = 60*i+30;
//60 - интервал , 30 исходная точка первого.
_root.attachMovie("kvadrat", "kvadrat5", 1);
_root.kvadrat5._x = 275;
_root.kvadrat5._y = 120;
_root.kvadrat5._xscale = 200;
_root.kvadrat5._yscale = 800;
_root.kvadrat5.onEnterFrame = function() {
myColor = new Color(this);
myColor.setRGB(0xFFFFFF);
this._alpha = 80;
};
_root.onEnterFrame = function() {
_root.d = 0;
if ((_root._xmouse>=(_root.kvadrat5._x-30)) && (_root._xmouse<=(_root.kvadrat5._x+30)) && (_root._ymouse>=(_root.kvadrat5._y-120)) && (_root._ymouse<=(_root.kvadrat5._y+120))) {
_root.d = 12;
if (_root.d == 12) {
zzz = 1;
zzz1 = 1;
zzz2 = 1;
zzz3 = 1;
}
}
zz += 1;
if (zz == 1) {
zzz = 1;
}
if (zz == 10) {
zzz1 = 1;
}
if (zz == 20) {
zzz2 = 1;
}
if (zz == 30) {
zzz3 = 1;
}
if (zz == 39) {
zz = 0;
}
};
_root.kvadrat0.onEnterFrame = function() {
if (zzz == 1) {
if (this._xscale<120) {
this._xscale = this._yscale += 2;
if (this._xscale == 120) {
zzz = 2;
}
}
}
if (zzz == 2) {
if (this._xscale>100) {
this._xscale = this._yscale -= 2;
if (this._xscale == 100) {
zzz = 0;
}
}
}
};
_root.kvadrat1.onEnterFrame = function() {
if (zzz1 == 1) {
if (this._xscale<120) {
this._xscale = this._yscale += 2;
if (this._xscale == 120) {
zzz1 = 2;
}
}
}
if (zzz1 == 2) {
if (this._xscale>100) {
this._xscale = this._yscale -= 2;
if (this._xscale == 100) {
zzz1 = 0;
}
}
}
};
_root.kvadrat2.onEnterFrame = function() {
if (zzz2 == 1) {
if (this._xscale<120) {
this._xscale = this._yscale += 2;
if (this._xscale == 120) {
zzz2 = 2;
}
}
}
if (zzz2 == 2) {
if (this._xscale>100) {
this._xscale = this._yscale -= 2;
if (this._xscale == 100) {
zzz2 = 0;
}
}
}
};
_root.kvadrat3.onEnterFrame = function() {
if (zzz3 == 1) {
if (this._xscale<120) {
this._xscale = this._yscale += 2;
if (this._xscale == 120) {
zzz3 = 2;
}
}
}
if (zzz3 == 2) {
if (this._xscale>100) {
this._xscale = this._yscale -= 2;
if (this._xscale == 100) {
zzz3 = 0;
}
}
}
};
}
Antares он полностю прав. Все гениальное просто!
Используйте обработчики onRollOut и onRollOver
Используйте обработчики onRollOut и onRollOver
Допустим ты сделал так повесил на кнопку команды на ее нажатие , и показываеш покупателю , он наводит мышкой на твое меню все круто меню изменилось нажимает кнопку и резко удаляет мышь за пределы поля флешки и вообще кнопку неотпускает , что мы видим а ничего хорошего при таком раскладе onRollOut несрабатывает , неспорю как когда-то говорил мне iNils ето вполне нормально для флеша , но ненормально для "товара" .
а так ты получишь более высокую точность .
if ((_root._xmouse>=(_root.meny._x-30)) && (_root._xmouse<=(_root.meny._x+30)) && (_root._ymouse>=(_root.meny._y-120)) && (_root._ymouse<=(_root.meny._y+120))) {
P.S. еще вопросы есть ?
Есть.
Все классно останавливается, но нифига не движется дальше после убирания мышки
Может штото типа этого
ЗЫ:c интервалами по шаманить над
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.