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

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

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

Регистрация: Jul 2010
Сообщений: 10
По умолчанию Динамическое создание клипов и функций к ним

Всем доброго времени суток

Подскажите пожалуйста, нужно динамически создать кучку кнопок и событий к ним.

Делаю так:



Код AS3:
    for (var i=0; i<50; i++){
            yy = yy + 600;
        var ruport = new ipod();
            ruport.name = "ipod" + String(i);
        ruport.x = yy;
        ruport.y = 160;
        lenta.addChild(ruport);
                srk.push(String('photo-999999_'+e[i]['pid']));
                srk1.push(ruport);
    srk1[i].addEventListener(MouseEvent.CLICK, rupodg);
    function rupodg(e:MouseEvent):void {
                    VK.api('wall.post', {owner_id:viewer_id, attachments:srk[i], from_group:0,message:'лалала',signed:0},  onLoadWall, onError);
    }
    }

В итоге создаются кнопки, но при нажатие на них одинаковое действие с последним значением массива ссылок "srk", а мне нужно что бы разные attachments были у каждой..

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
ух, что ж у вас код так расколбасило то... ну окей, вот так должно прокатить, если у вас в мувике этот код находится
Код AS3:
    for (var i=0; i<50; i++){
            yy = yy + 600;
        var ruport = new ipod();
            ruport.name = "ipod" + String(i);
        ruport.x = yy;
        ruport.y = 160;
        lenta.addChild(ruport);
                srk.push(String('photo-999999_'+e[i]['pid']));
                srk1.push(ruport);
    srk1[i].addEventListener(MouseEvent.CLICK, this["rupordg"+i]);
    this["rupordg"+i] = function (e:MouseEvent):void {
                    VK.api('wall.post', {owner_id:viewer_id, attachments:srk[i], from_group:0,message:'лалала',signed:0},  onLoadWall, onError);
    }
    }
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jul 2010
Сообщений: 10
Код AS3:
    srk1[i].addEventListener(MouseEvent.CLICK, this["rupordg"+i]);
    this["rupordg"+i] = function (e:MouseEvent):void {
Так почему то вообще перестали нажиматься..

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Сообщение от ekooo Посмотреть сообщение
Код AS3:
    srk1[i].addEventListener(MouseEvent.CLICK, this["rupordg"+i]);
    this["rupordg"+i] = function (e:MouseEvent):void {
Так почему то вообще перестали нажиматься..
А если поменять местами объявление функции и добавление слушателя?
Дело в том, что это создание функции "на лету", поэтому лучше поменять местами.
__________________
There is no thing in this world that is not simple.

Старый 20.02.2015, 14:37
ekooo вне форума Посмотреть профиль Отправить личное сообщение для ekooo Найти все сообщения от ekooo
  № 5  
Ответить с цитированием
ekooo

Регистрация: Jul 2010
Сообщений: 10
Поменял местами, начали нажиматься, но эффект такой же:
Например ставим message:'лалала' + i
Код AS3:
VK.api('wall.post', {owner_id:viewer_id, attachments:srk[i], from_group:0,message:'лалала' + i,signed:0},  onLoadWall, onError);
При нажатие на все кнопки выводит лалала50, а не лалала0, лалала1 и т.д.

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код AS3:
    for (var i=0; i<50; i++){
            yy = yy + 600;
        var ruport = new ipod();
            ruport.name = "ipod" + String(i);
        ruport.x = yy;
        ruport.y = 160;
        lenta.addChild(ruport);
                srk.push(String('photo-999999_'+e[i]['pid']));
                srk1.push(ruport);
    this["rupordg"+i] = function (e:MouseEvent):void {
                    VK.api('wall.post', {owner_id:viewer_id, attachments:srk[i], from_group:0,message:'лалала',signed:0},  onLoadWall, onError);
    }();
 srk1[i].addEventListener(MouseEvent.CLICK, this["rupordg"+i]);
    }
У меня нет компьютера под рукой, чтобы проверить... Работает ли в AS такая конструкция, которая работает в JS. Если не работает, то придётся переписывать код немного иначе =)
__________________
There is no thing in this world that is not simple.

Старый 20.02.2015, 15:07
ekooo вне форума Посмотреть профиль Отправить личное сообщение для ekooo Найти все сообщения от ekooo
  № 7  
Ответить с цитированием
ekooo

Регистрация: Jul 2010
Сообщений: 10
Немного упростил код:

Код AS3:
var srk:Array = new Array();
var srk1:Array = new Array();
var yy = -10;
 
for (var i=0; i<5; i++){
        yy = yy + 25;
        var ruport = new ipod();
        ruport.x = yy;
        ruport.y = 160;
        addChild(ruport);
        srk.push(ruport);
        srk1.push(i);       
    this["rupordg"+i] = function (e:MouseEvent):void {
    trace(i);
	}
srk[i].addEventListener(MouseEvent.CLICK, this["rupordg"+i]);
}
При нажатие на все кнопки выводит последний результат цикла..

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
А как у меня с круглыми скобками после фигурных то же?
__________________
There is no thing in this world that is not simple.

Старый 20.02.2015, 15:17
ekooo вне форума Посмотреть профиль Отправить личное сообщение для ekooo Найти все сообщения от ekooo
  № 9  
Ответить с цитированием
ekooo

Регистрация: Jul 2010
Сообщений: 10
Выдает ошибку:
Код:
ArgumentError: Error #1063: Несоответствие количества аргументов в MethodInfo-4(). Ожидалось 1, получено 0.
	at _fla::MainTimeline/frame1()

Старый 20.02.2015, 15:32
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 10  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ааа, не, точно, тут же маусивент нужен.
Окей, значит, суйте туда вместо i индекс ячейки массива, по которому находится кнопка(если они совпадают).


А ещё заметил, что вы и i сохраняете в srk1, тогда ещё так можно вытащить.
Код AS3:
trace(srk1[srk.indexOf(e.currentTarget as MovieClip)])
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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