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

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

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

Регистрация: Apr 2009
Сообщений: 78
По умолчанию Работа кнопки в цикле

Есть цикл, который выстраивает список треков в плеере из массива, который получает из mysql. Все работает как надо. Нужно реализовать, чтобы при нажатии на элемент этого списка запускался нужный файл (его имя также подгружается из базы). Проблема собственно с реализацией этого самого нажатия в этом цикле в АС3. В АС2 мой код выглядил так:
Код AS1/AS2:
for(var i:uint = 0; i<_result.length;i++) {
var _id:Number = _result[i][0];
item._id = _id;
item.OnRelease = function() {
 
s.play (this.lfile);
 
}
}
В АС3 пытался сделать так:
Код AS3:
for(var i:uint = 0; i<_result.length;i++) {
 
var _id:Number = _result[i][0];
newTrackItem.addEventListener(MouseEvent.CLICK, playItem);
 
newTrackItem._id = _id;
 
function playItem(e:MouseEvent):void {
 
trace(newTrackItem._id);
 
}		
}
Но трейсится только ИД последней записи в списке. При клике на любую кнопку.
Прошу прощения за глупые вопросы, но с АС3 пока что тока разбираюсь

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

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Ваш код — бред какой-то.
Код AS3:
for(var i:uint = 0; i<_result.length;i++) {
 var _id:Number = _result[i][0];
 newTrackItem.addEventListener(MouseEvent.CLICK, playItem);
 newTrackItem._id = _id;	
}
function playItem(e:MouseEvent):void {
 trace(newTrackItem._id);
}
У _id, всегда будет последнее значение, ведь вы не меняете newTrackItem в цикле.


Последний раз редактировалось Fatality; 01.05.2009 в 00:16.
Старый 01.05.2009, 00:19
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код AS3:
for(var i:uint = 0; i<_result.length;i++) {
	var _id:Number = _result[i][0];
	// формирует newTrackItem, о чем сказал Fatality
	newTrackItem.addEventListener(MouseEvent.CLICK, playItem);
	newTrackItem._id = _id;
}
function playItem (e:MouseEvent):void {
	trace (e.target.x);
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.05.2009, 00:25
Fatality вне форума Посмотреть профиль Отправить личное сообщение для Fatality Найти все сообщения от Fatality
  № 4  
Ответить с цитированием
Fatality
 
Аватар для Fatality

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Обработчик один, а слушателей много.
Код AS3:
function playItem(e:MouseEvent):void {
 trace(e.target._id);
}

Старый 01.05.2009, 00:30
imdogma вне форума Посмотреть профиль Отправить личное сообщение для imdogma Найти все сообщения от imdogma
  № 5  
Ответить с цитированием
imdogma
 
Аватар для imdogma

Регистрация: Apr 2009
Сообщений: 78
Странно, в трейсе - undefined пишет

Добавлено через 50 секунд
Вот весь код цикла, мб так понятнее будет
Код AS3:
for(var i:uint = 0; i<_result.length;i++) {
 
				var newTrackItem:MovieClip = new trackItem();
 
				newTrackList.addChild(newTrackItem);
				newTrackItem.x = i*22+60
				newTrackItem.y = -10;
				newTrackItem.buttonMode = true;
				var _id:Number = _result[i][0];
				var _trackAuthor:String = _result[i][1];
				var _trackName:String = _result[i][2];
				var _trackFilename:String = _result[i][3];
 
				newTrackItem.id.text = _id;
				newTrackItem._id = _id;
				newTrackItem.addEventListener(MouseEvent.CLICK, playItem);
 
				function playItem (e:MouseEvent):void {
				trace (e.target._id);
				}
 
 
 
				}

Старый 01.05.2009, 00:34
Fatality вне форума Посмотреть профиль Отправить личное сообщение для Fatality Найти все сообщения от Fatality
  № 6  
Ответить с цитированием
Fatality
 
Аватар для Fatality

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Вам же два раза написали, я и iNils, а вы опять за свое. Ну зачем обработчик в цикл пихать ?

Старый 01.05.2009, 00:39
imdogma вне форума Посмотреть профиль Отправить личное сообщение для imdogma Найти все сообщения от imdogma
  № 7  
Ответить с цитированием
imdogma
 
Аватар для imdogma

Регистрация: Apr 2009
Сообщений: 78
Хммм извеняюсь, невнимательно прочел ваши примеры. Только вот от вынесения обработчика из цикла мало что изменилось. все равно - undefined

Добавлено через 26 минут
Урааа! помог не
Код AS3:
e.target
а
Код AS3:
e.currentTarget
Спасибо за наводку, ребят!

Старый 01.05.2009, 01:08
Fatality вне форума Посмотреть профиль Отправить личное сообщение для Fatality Найти все сообщения от Fatality
  № 8  
Ответить с цитированием
Fatality
 
Аватар для Fatality

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
В коде что вы выложили - все норм. Попробуйте
Код AS3:
for(var i:uint = 0; i<_result.length;i++) {
	var newTrackItem:MovieClip = new trackItem();
	newTrackList.addChild(newTrackItem);
	newTrackItem.x = i*22+60
	newTrackItem.y = -10;
	newTrackItem.buttonMode = true;
	var _id:Number = _result[i][0];
	var _trackAuthor:String = _result[i][1];
	var _trackName:String = _result[i][2];
	var _trackFilename:String = _result[i][3];
	newTrackItem.id.text = _id;
	newTrackItem._id = _id;
           trace(newTrackItem._id); //что выводит этот трэйс ?
	newTrackItem.addEventListener(MouseEvent.CLICK, playItem);
}

Старый 01.05.2009, 01:12
imdogma вне форума Посмотреть профиль Отправить личное сообщение для imdogma Найти все сообщения от imdogma
  № 9  
Ответить с цитированием
imdogma
 
Аватар для imdogma

Регистрация: Apr 2009
Сообщений: 78
Этот трейс выводит все ID, что есть в нужной мне таблице в базе. С ним все норм. Проблема была именно в e.target._id. Нужно было использовать e.currentTarget._id и все стало хорошо

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

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

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


 


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


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