![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Есть цикл, который выстраивает список треков в плеере из массива, который получает из mysql. Все работает как надо. Нужно реализовать, чтобы при нажатии на элемент этого списка запускался нужный файл (его имя также подгружается из базы). Проблема собственно с реализацией этого самого нажатия в этом цикле в АС3. В АС2 мой код выглядил так:
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); } } 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 пока что тока разбираюсь |
|
|||||
|
Ваш код — бред какой-то.
У _id, всегда будет последнее значение, ведь вы не меняете newTrackItem в цикле. Последний раз редактировалось Fatality; 01.05.2009 в 00:16. |
|
|||||
|
Обработчик один, а слушателей много.
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Странно, в трейсе - undefined пишет
![]() Добавлено через 50 секунд Вот весь код цикла, мб так понятнее будет 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); } } |
|
|||||
|
Вам же два раза написали, я и iNils, а вы опять за свое. Ну зачем обработчик в цикл пихать ?
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Хммм извеняюсь, невнимательно прочел ваши примеры. Только вот от вынесения обработчика из цикла мало что изменилось. все равно - undefined
Добавлено через 26 минут Урааа! помог не а Спасибо за наводку, ребят! |
|
|||||
|
В коде что вы выложили - все норм. Попробуйте
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); } |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Этот трейс выводит все ID, что есть в нужной мне таблице в базе. С ним все норм. Проблема была именно в e.target._id. Нужно было использовать e.currentTarget._id и все стало хорошо
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|