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

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

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

Регистрация: Feb 2006
Сообщений: 16
По умолчанию OnRelease в цикле

Здравствуйте. Столкнулся с интересной проблемой - не задается действие onRelease в цикле. Все происходят в мувике lv. Динамически создается мувиклип, в нем динамической текстовое поле, заносятся значения в несколько массивов (ранее созданных), присваивается действие при нажатии на мувиеклип. Но вот проблема в том что при исполнее действия trace - всегда (на всех мувиках) выдается число 12 (то есть общее кол-во элементов массива + 1 - то есть как бы последнее число а),а по задумывалось что бы при нажатии выдавался a - элемента. Как решить эту проблему?

Элемент кода
Код:
...
		for (var a:Number = 1; a<=Number(lvlname.length); a++) {
			lv.createEmptyMovieClip("but"+a, lv.getNextHighestDepth());
			lv["but"+a].createTextField("qwe"+a, a, 0, 0, 400, 140)			
                        lv["but"+a]._x = 50;
			lv["but"+a]._y = th;
			lv["but"+a].onRelease = function() { trace(a); }
			if (a == lvlname.length) {
				lv["but"+a]["qwe"+a].text = a+". Итого - "+total;
			} else {
				if (!lvlpoint[a]) {
					lvlpoint[a] = 0;
				}
				total += Number(lvlpoint[a]);
				lv["but"+a]["qwe"+a].text = a+". "+lvlname[a]+" - "+lvlpoint[a];
				if (lvlpoint[a] == 0) lv["but"+a]["qwe"+a].setTextFormat(rstat);
				else 	lv["but"+a]["qwe"+a].setTextFormat(stat);
				
			}
			th += 20;
		}
	}
...

rstat и stat это разные текстовые стили.


Последний раз редактировалось atran; 30.10.2007 в 10:59.
Старый 30.10.2007, 11:02
CorC вне форума Посмотреть профиль Отправить личное сообщение для CorC Найти все сообщения от CorC
  № 2  
Ответить с цитированием
CorC
 
Аватар для CorC

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
Правильно что задается length+1, ведь "a" такой и станет.
Нажатие же произойдет после цикла...
Есть выход в цикле заводить переменную в клипе = а и потом при релизе от неё плясать...
__________________
"We Are The Champions My Friends!" Queen

Старый 30.10.2007, 11:08
atran вне форума Посмотреть профиль Отправить личное сообщение для atran Найти все сообщения от atran
  № 3  
Ответить с цитированием
atran

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

То есть
Код:
lv["but"+a].numv = a;
lv["but"+a].onRelease = function() { trace(lv.but1.numv); }
будет работать, а


Код:
lv["but"+a].numv = a;
lv["but"+a].onRelease = function() { trace(lv["but"+a].numv); }
нет


Последний раз редактировалось screamge; 31.10.2007 в 08:57.
Старый 30.10.2007, 11:18
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код:
lv["but"+a].numv = a;
lv["but"+a].onRelease = function() {
	trace(this.numv);
};

Старый 30.10.2007, 11:20
atran вне форума Посмотреть профиль Отправить личное сообщение для atran Найти все сообщения от atran
  № 5  
Ответить с цитированием
atran

Регистрация: Feb 2006
Сообщений: 16
Большое спасибо за помощь! Совсем забыл про this.

Старый 30.10.2007, 12:46
Infectedcell вне форума Посмотреть профиль Отправить личное сообщение для Infectedcell Посетить домашнюю страницу Infectedcell Найти все сообщения от Infectedcell
  № 6  
Ответить с цитированием
Infectedcell
 
Аватар для Infectedcell

Регистрация: Mar 2006
Адрес: Москва
Сообщений: 415
а так? =)
Код:
var mc:MovieClip = lv["but"+a]
mc.onRelease = function() {
	trace(this);
};
__________________
Mix: Хобби | Работа | undefined

Старый 30.10.2007, 12:54
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 7  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
и че?
обычная замена.. тоже самое, что:
Код:
var mc:MovieClip = a;
a.onPress = ...

Старый 05.11.2007, 04:54
BARTLEBY вне форума Посмотреть профиль Отправить личное сообщение для BARTLEBY Найти все сообщения от BARTLEBY
  № 8  
Ответить с цитированием
BARTLEBY
[+4 02.11.07]
[+1 18.12.07]
 
Аватар для BARTLEBY

Регистрация: Oct 2006
Сообщений: 100
я бы сделал всё проще

Код:
for(var i=0; i<len;i++){
    var t:MovieClip = lv.createEmptyMovieClip("but"+a,lv.getNextHighestDepth());
    t.createTextField("qwe"+a, a, 0, 0, 400, 140)
    t.onPress = Press;
    t.num = i
}
function Press(){
     trace(this.num)
}

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

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

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


 


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


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