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

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

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

Регистрация: Feb 2007
Сообщений: 19
Question Цикл for и что-то необъяснимое

trace (counter) при клике всегда выдает 4...
почему???
и как заставить выдавать 1 при клике по первому, 2 по второму и т.д.?
Код:
for (counter = 1; counter <= 3; counter++) {
	currentImgBut = "imgBut" + counter;
	_root.imageNum.attachMovie("imgBut", currentImgBut, _root.imageNum.getNextHighestDepth());
	_root.imageNum[currentImgBut].imgNumText.text = counter;
	_root.imageNum[currentImgBut]._x = _root.imageNum[currentImgBut]._width * counter;
	_root.imageNum[currentImgBut].onRelease = function () {
		//_root.galleryLoader.loadClip (counter + ".jpg", _root.galleryImages);
		trace (counter);
	}
}

Старый 13.02.2007, 22:30
sokiche вне форума Посмотреть профиль Отправить личное сообщение для sokiche Посетить домашнюю страницу sokiche Найти все сообщения от sokiche
  № 2  
Ответить с цитированием
sokiche
 
Аватар для sokiche

Регистрация: Feb 2007
Сообщений: 19
Даже если написать так
Код:
for (counter = 1; counter <= 3; counter++) {
	_root.imageNum["imgBut" + counter].onRelease = function () {
		_root.galleryLoader.loadClip (counter + ".jpg", _root.galleryImages);
	}
}
counter все-равно равен четырем...

Старый 13.02.2007, 23:29
Apeyron вне форума Посмотреть профиль Отправить личное сообщение для Apeyron Найти все сообщения от Apeyron
  № 3  
Ответить с цитированием
Apeyron

Регистрация: Apr 2006
Сообщений: 8
Отправить сообщение для Apeyron с помощью ICQ
Это потому что сначала плеер пройдет цикл и только потом он вернеться к обработчикам событий(это видно в дебагере)...
Код:
for (counter = 1; counter <= 3; counter++) {
	_root.imageNum["imgBut" + counter].onRelease = function () {
for(counter2=1;counter2<=3;counter2++){
		_root.galleryLoader.loadClip (counter2 + ".jpg", _root.galleryImages);
	}
};
}
Не очень красиво, но работает...

Старый 13.02.2007, 23:57
sokiche вне форума Посмотреть профиль Отправить личное сообщение для sokiche Посетить домашнюю страницу sokiche Найти все сообщения от sokiche
  № 4  
Ответить с цитированием
sokiche
 
Аватар для sokiche

Регистрация: Feb 2007
Сообщений: 19
Все время 3 выдает.
Т.е. нет ни 1, ни 2, а только 3.


Последний раз редактировалось sokiche; 14.02.2007 в 00:04.
Старый 14.02.2007, 00:30
kmkhi вне форума Посмотреть профиль Отправить личное сообщение для kmkhi Найти все сообщения от kmkhi
  № 5  
Ответить с цитированием
kmkhi

Регистрация: Feb 2007
Сообщений: 24
попробуй им всем ставить разные имена и на клик выдавать ответ в зависимости от имени. а имена нужно всегда давать разные

Старый 14.02.2007, 00:57
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Все верно, после выполнения цикла значение counter будет равно четырем. Именно эту переменную вы трейсите. Нужно делать так:

Код:
for (counter = 1; counter <= 3; counter++) {
	currentImgBut = "imgBut" + counter;
	var mc = _root.imageNum.attachMovie("imgBut", currentImgBut, _root.imageNum.getNextHighestDepth());
	mc.imgNumText.text = counter;
	mc._x = _root.imageNum[currentImgBut]._width * counter;
        mc.id = i;
	mc.onRelease = function () {
		trace (this.id);
	}
}

Старый 14.02.2007, 01:22
sokiche вне форума Посмотреть профиль Отправить личное сообщение для sokiche Посетить домашнюю страницу sokiche Найти все сообщения от sokiche
  № 7  
Ответить с цитированием
sokiche
 
Аватар для sokiche

Регистрация: Feb 2007
Сообщений: 19
Обалдеть!
Спасибо! Работает.

Что-то я в доках ID не видел.

Старый 14.02.2007, 01:38
pkfun вне форума Посмотреть профиль Отправить личное сообщение для pkfun Посетить домашнюю страницу pkfun Найти все сообщения от pkfun
  № 8  
Ответить с цитированием
pkfun

Регистрация: Feb 2006
Сообщений: 580
Его и нет. Это новое свойство, которое создается динамически для каждого мувиклипа и сохраняет текущее значение counter.

__etc
А можно как-то без добавления нового свойства?

Старый 14.02.2007, 01:49
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Можно. Но MovieClip — динамический класс. С id вернее было бы.
Код:
mc.onRelease = function() {
    trace(Number(this._name.substr(6)));
}
Лично я бы сделал подкласс MovieClip с заданным свойством id.

Старый 14.02.2007, 01:55
pkfun вне форума Посмотреть профиль Отправить личное сообщение для pkfun Посетить домашнюю страницу pkfun Найти все сообщения от pkfun
  № 10  
Ответить с цитированием
pkfun

Регистрация: Feb 2006
Сообщений: 580
Да-да. Я тоже сейчас задумался над этим. Только взвешиваю, можно сказать, трудозатраты. Создавать дин. свойство проще...

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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