![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 7
|
Задача такая - есть две кнопки button1 и button2
Нужно чтобы при наведении на них отображалось ее название в поле DinamicText. Проблема в том, что если не использовать цикл, то все работает, а в цикле работать не хочет, хотя trace выдает названия нормально. Ниже привожу код. Исходник в аттаче. //Массив названий кнопок
ArrFigure = new Array()
ArrFigure[0] = "Круг";
ArrFigure[1] = "Квадрат";
//Массив имен кнопок
NameFigure = new Array()
NameFigure[0] = figure0;
NameFigure[1] = figure1;
stop();
//Показывать названия
function Help(mc,T){
_root.attachMovie("help","help",_root.getNextHighestDepth(),{_x:10,_y:5});
help.txt.text=T;
}
//Скрывать названия
function HelpOut(){
help.removeMovieClip();
help.txt.text="";
}
for(bz=0;bz<NameFigure.length;++bz)
{
NameFigure[bz].onRollOut=HelpOut;
NameFigure[bz].onRollOver=function(){Help(NameFigure[bz],ArrFigure[bz])};
trace(NameFigure[bz] + "," + ArrFigure[bz]);
}
//NameFigure[0].onRollOver=function(){Help(NameFigure[0],ArrFigure[0])};
//NameFigure[1].onRollOver=function(){Help(NameFigure[1],ArrFigure[1])};
|
|
|||||
|
Проблемма в том, что когда ф-я onRollOver выполняется, она и выполняет
И использует именно переменную bz, которая у вас уже равна двум. Ну, еще цикл у вас кривой. Сделайте так: for(bz=0;bz<NameFigure.length;bz++)
{
NameFigure[bz].num=bz;
NameFigure[bz].onRollOut=HelpOut;
NameFigure[bz].onRollOver=function(){Help(NameFigure[this.num],ArrFigure[this.num])};
trace(NameFigure[bz].num + "," + ArrFigure[bz]);
}
function Help(mc,T){
_root.attachMovie("help","help",_root.getNextHighestDepth(),{_x:10,_y:5});
help.txt.text="T"; // Где кавычки? — Это переменная, не нужны там кавычки.
}
//Скрывать названия
function HelpOut(){
help.removeMovieClip();
help.txt.text=""; // зачем это? — Это и правда ненадо. Но сбивать человека столку зачем?
}
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 7
|
С кавычками будет выводить букву "Т", вместо слов "Круг" и "Квадрат".
Про согласен, можно и без него. Дело в том, что если оставить последнюю часть кода в таком виде: for(bz=0;bz<NameFigure.length;++bz)
{
NameFigure[bz].onRollOut=HelpOut;
// NameFigure[bz].onRollOver=function(){Help(NameFigure[bz],ArrFigure[bz])};
// trace(NameFigure[bz] + "," + ArrFigure[bz]);
}
NameFigure[0].onRollOver=function(){Help(NameFigure[0],ArrFigure[0])};
NameFigure[1].onRollOver=function(){Help(NameFigure[1],ArrFigure[1])};
|
|
|||||
|
loading 50%
|
crazyone, да я насчет кавычек перегнул -утро.
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 7
|
to crazyone:
Действительно помогло, спасибо! |
|
|||||
|
loading 50%
|
ArrFigure = new Array()
ArrFigure[0] = "Круг";
ArrFigure[1] = "Квадрат";
NameFigure = new Array()
NameFigure[0] = figure0;
NameFigure[1] = figure1;
stop();
//Показывать названия
for(bz=0;bz<NameFigure.length;++bz)
{
out(bz);
onrv(bz);
}
function out(bz){
NameFigure[bz].onRollOut=function(){
help.removeMovieClip();}}
function onrv(bz)
{
NameFigure[bz].onRollOver=function(){
attachMovie("help","help",_root.getNextHighestDepth(),{_x:10,_y:5});
help.txt.text=ArrFigure[bz];
}};
![]() Последний раз редактировалось aksios; 03.07.2008 в 14:19. Причина: вставка смайлика |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|