Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.07.2008, 12:41
solidser вне форума Посмотреть профиль Отправить личное сообщение для solidser Найти все сообщения от solidser
  № 1  
Ответить с цитированием
solidser

Регистрация: Nov 2007
Сообщений: 7
По умолчанию Проблема с циклом for

Задача такая - есть две кнопки 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])};
Вложения
Тип файла: rar figure.rar (5.5 Кб, 35 просмотров)

Старый 03.07.2008, 13:46
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 2  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Проблемма в том, что когда ф-я onRollOver выполняется, она и выполняет
Код:
Help(NameFigure[bz],ArrFigure[bz])
И использует именно переменную 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]);
	}
Только figure1 и figure2 должны быть MovieClip-ами для этого.

Код:
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=""; // зачем это? — Это и правда ненадо. Но сбивать человека столку зачем?
}

Старый 03.07.2008, 13:50
solidser вне форума Посмотреть профиль Отправить личное сообщение для solidser Найти все сообщения от solidser
  № 3  
Ответить с цитированием
solidser

Регистрация: Nov 2007
Сообщений: 7
С кавычками будет выводить букву "Т", вместо слов "Круг" и "Квадрат".
Про
Код:
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])};
то все работает, но если присвоить значения события в цикле, то будет выводится надпись "undefined"

Старый 03.07.2008, 13:50
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 4  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
crazyone, да я насчет кавычек перегнул -утро.

Старый 03.07.2008, 13:54
solidser вне форума Посмотреть профиль Отправить личное сообщение для solidser Найти все сообщения от solidser
  № 5  
Ответить с цитированием
solidser

Регистрация: Nov 2007
Сообщений: 7
to crazyone:
Действительно помогло, спасибо!

Старый 03.07.2008, 14:18
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 6  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Код:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.