PDA

Просмотр полной версии : определить что на кнопку навели курсор


Zhihar
11.01.2008, 14:25
Приветствую
у меня есть много кнопок, когда курсор наводится на любую из них, кнопка становится больше, а остальные кнопки тускнеют

сделал в лоб - для каждой кнопки свой код:


on(rollOver)
{
for (i = 1; i <= 7; ++ i)
{
if (i != 1)
{
this["video_cable_" + i]._alpha = 50;
}
}
}

on(rollOut)
{
for (i = 1; i <= 7; ++ i)
{
this["video_cable_" + i]._alpha = 100;
}
}


но такой подход мне не нравится, мне хотелось бы вынести код выше, поскольку для всех кнопок он одинаковый за исключением ID кнопки

как это сделать? т.е. как определить в том же for что на кнопку с таким-то id навели курсор или наоборот убрали

Fernando Costa
11.01.2008, 14:46
for(i=0;i<10;i++){
this['bt'+i].onRollOver = function(){
trace(this)
}
}

Волгоградец
11.01.2008, 14:49
Надо создать 5 кнопок с именами but1, but2...
for (var i:Number = 1, i <= 5, i ++){
this["but" + i].onRollOver = function (){
trace ("12345")
}
}

Опередили...

Zhihar
11.01.2008, 14:51
т.е. я так понимаю что все сводится к созданию функций для кнопок?
а стоит ли их где-то потом удалять?

Волгоградец
11.01.2008, 14:54
Да, получается, что мы перебираем все кнопки - и для каждой создаем функцию. Функцию удалять не надо.

Zhihar
11.01.2008, 14:57
поставил такой код (удалив код на кнопках)


for (i = 1; i <= 7; ++ i)
{
this["video_cable_" + i].onRollOver = function ()
{
for (i = 1; i <= 7; ++ i)
{
if (i != 1)
{
this["video_cable_" + i]._alpha = 50;
}
}
}

this["video_cable_" + i].onRollOut = function ()
{
for (i = 1; i <= 7; ++ i)
{
this["video_cable_" + i]._alpha = 100;
}
}
}


почему-то перестало работать
т.е. ошибок не выдает но и эффекта 0

Fernando Costa
11.01.2008, 15:01
в таких случаях проставьте трейсы, и поймете что у вас проблемы с областью видимости.
Сейчас вы пытаетесь альфу поменять 7 мувикам вложенным в ваш ["video_cable_" + i]

Zhihar
11.01.2008, 15:10
да, что-то я намудрил - переписал код так


function ShowSelectedVideoCable(nSelectedCable:Number)
{
trace(nSelectedCable);

for (j = 1; j <= 7; ++ j)
{
if (j != nSelectedCable)
{
this["video_cable_" + j]._alpha = 50;
}
}
}

function ShowAllVideoCables()
{
for (j = 1; j <= 7; ++ j)
{
this["video_cable_" + j]._alpha = 100;
}
}

for (i = 1; i <= 7; ++ i)
{
this["video_cable_" + i].onRollOver = function(){ShowSelectedVideoCable(i)};
this["video_cable_" + i].onRollOut = function(){ShowAllVideoCables()};
}


работает - но trace выдет 8, причем не важно на какую я кнопку навел 1,2,3 и т.д.

вот это я понять не могу :-(
ОТКУДА!!!?

Волгоградец
11.01.2008, 15:12
for (var i:Number = 1, i <= 5, i ++){
this["but" + i].onRollOver = function (){
this["video_cable_" + i]._alpha = 50;
}
this["but" + i].onRollOut= function (){
this["video_cable_" + i]._alpha = 100;
}
}

Zhihar
11.01.2008, 15:17
Волгоградец

нет , этот код вообще не работает

мне нужно при наводе на кнопку сделать полупрозрачными все кнопки кроме наведенной
а при отводе вернуть все на место

Fernando Costa
11.01.2008, 15:26
function ShowSelectedVideoCable(nSelectedCable:Number)
{
trace(nSelectedCable);

for (j = 1; j <= 7; ++ j)
{
if (j != nSelectedCable)
{
this["video_cable_" + j]._alpha = 50;
}
}
}

function ShowAllVideoCables()
{
for (j = 1; j <= 7; ++ j)
{
this["video_cable_" + j]._alpha = 100;
}
}

for (i = 1; i <= 7; ++ i)
{ this["video_cable_" + i].index = i
this["video_cable_" + i].onRollOver = function(){ShowSelectedVideoCable(this.index)};
this["video_cable_" + i].onRollOut = function(){ShowAllVideoCables()};
}

Zhihar
11.01.2008, 15:38
Ура, заработало, спасибки
а почему так?
обязательно ли добавлять этот Index?

Fernando Costa
11.01.2008, 15:44
в данном случае да, хотя конечно можно и по-другому.

ЗЫ: index - просто переменная