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

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

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

Регистрация: Mar 2012
Адрес: Третья от Солнца планета.
Сообщений: 20
По умолчанию addEventListener в for записывается только в последний объект массива

Учу AS3, пишу плеер для вконтакта. Есть массив из кнопок с именами-значениями ИД пользователя, список песен которого нужно получить. Делаю цикл for, в котором обхожу все элементы, вешая на них addEventListener.
В функции слушателе я получаю ИД через e.target.name, и делаю запрос к апи контакта audio.get, с нужным мне именем.
В оффлайн тесте - все прекрасно работает, но вот из самого контакта как кнопка работает только последняя в массиве.
Всю голову сломал. Пробовал разные варианты вешания события на кнопку и из самого класса-контейнера с кнопками, и из главного класса приложения - эффект один. Причем e.target.name всегда передает ИД пользователя.

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
код в студию
__________________
местонахождение

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

Регистрация: Mar 2012
Адрес: Третья от Солнца планета.
Сообщений: 20
Код AS3:
		public function drawKnopki(dataFr:Object):void {
			for (var key:uint = 0; key < dataFr.length; key++) {
				var friend:Object = dataFr[key];
				friendsButtons.push(new FriendsPlusFoldersContainer.FriendButSimpleBut(friend));
				friendsButtons[key].name = friend['uid'];
				addChild(friendsButtons[key]);
				friendsButtons[key].y = 100 * key + 5;
			}
		}
Этот код рисует кнопки в классе контейнере для кнопок.
dataFr - полный ответ на friends.get от контакта.
FriendButSimpleBut - это SimpleButton, расширенный спрайтами кнопок и цветами.


В главном классе, когда приходит ответ от контакта(dataFr) выполняется следующая функция

Код AS3:
public function onFriendsLoad(dataFr:Object):void {
		friendsContainer = new FriendsPlusFoldersContainer.FriendsPlusFoldersContainer(dataFr);
		friendsContainer.x = 380;
		friendsContainer.y = playka.y + playka.height + 5;
		for (var key:uint = 0; key < dataFr.length; key++) {
			var temp:String = dataFr[key]['uid'];
			friendsContainer.friendsButtons[key].addEventListener(MouseEvent.CLICK, playListClickListener);
		}
		addChild(friendsContainer);
	}
FriendsPlusFoldersContainer - контейнер для кнопок
playka другой контейнер, не имеющий в данном случае отношения к делу


Код AS3:
	public function playListClickListener(e:MouseEvent):void {
		var tempTf:TextField = new TextField();
		tempTf.text = (e.target.name);
		tempTf.x=250;
		playka.addChild(tempTf);
		trace("Вы нажали " + e.target.name);
		VK.api('audio.get', { uid: e.target.name }, audioListLoadComplite, onError);
		e.updateAfterEvent();
	}
tempTF - временная меря для проверки работоспособности без output.
audioListLoadComplite - фунция, выполняющая рисование самих песен кнопок на основе ИД пользователя.

Если нужно - могу и весь код скинуть. Так же просьба не судить строго, но на ошибки указывать, учусь как никак)

Добавлено через 24 часа 31 минуту
Обнаружил неточность в показаниях. Как выяснилось, не работают только некоторые кнопки, причем закономерность обнаружить не удалось.


Последний раз редактировалось zoomerland; 15.03.2012 в 14:16.
Создать новую тему Ответ Часовой пояс GMT +4, время: 00:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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