Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   передача параметра функции в слушателе (http://www.flasher.ru/forum/showthread.php?t=192690)

pomuс 18.01.2013 02:48

передача параметра функции в слушателе
 
Приветствую
Стоит задача передать загруженный xml в функцию, которая будет вызываться по клику кнопки. Если бы я делал все в классах, то тут вопросов нет, передать было бы не проблема. Но делаю я через клипы.
имеет ли вообще смысл подобное?
Код AS3:

function loadPage3(doc:XML){
        var xmlData3:XMLList = XML(doc).data3;
 
        for (var j:int=1; j<14; j++){
                /// тут я пробовал и b[j], все равно не работало
                //this.page3['btn'+j]['btn'+j+'_txt'].text = j+". "+xmlPage3.buttons.@b+j;
                ///вот тут компилятор ругается на синтаксис  Syntax error: expecting rightparen before colon
                this.page3['btn'+j].addEventListener(MouseEvent.CLICK, data3buttons(xmlData3:XMLList));
 
        }
}
function data3buttons (e:MouseEvent, doc:XMLList):void{}

в комментариях указал строчку в которой тоже ошибся синтаксисом. По разному пробовал, но что то не так.

Condorcet 18.01.2013 11:33

в addEventListener передается как бы ссылка на функцию (если посмотришь справку, то увидишь что этому аргументу соответствует тип Function). Ты же пытаешься ее вызвать, причем неправильно, т.к. ниже в заголовке функции указал два аргумента, а вызываешь с одним. Короче говоря, передать твой XML таким образом не выйдет.

strangedk 18.01.2013 13:48

Цитата:

Сообщение от pomuс (Сообщение 1116403)
Приветствую
Стоит задача передать загруженный xml в функцию, которая будет вызываться по клику кнопки. Если бы я делал все в классах, то тут вопросов нет, передать было бы не проблема. Но делаю я через клипы.
имеет ли вообще смысл подобное?
Код AS3:

function loadPage3(doc:XML){
        var xmlData3:XMLList = XML(doc).data3;
 
        for (var j:int=1; j<14; j++){
                /// тут я пробовал и b[j], все равно не работало
                //this.page3['btn'+j]['btn'+j+'_txt'].text = j+". "+xmlPage3.buttons.@b+j;
                ///вот тут компилятор ругается на синтаксис  Syntax error: expecting rightparen before colon
                this.page3['btn'+j].addEventListener(MouseEvent.CLICK, data3buttons(xmlData3:XMLList));
 
        }
}
function data3buttons (e:MouseEvent, doc:XMLList):void{}

в комментариях указал строчку в которой тоже ошибся синтаксисом. По разному пробовал, но что то не так.

Можно вынести xmlData3 вне функции loadPage3, тогда обработчик будет иметь доступ к xmlData3.
Но тут смотря где находится слушатель, и как организована работа с данными. В клипах не получится получить доступ к данным в других кадрах

СлаваRa 18.01.2013 13:54

советую почитать статью о слушателях с параметрами

am_devcorp 18.01.2013 20:09

Или написать свой евент с хмл - переменной внутри себя

А, ну это #5 в статье в предыдущем посте

pomuс 18.01.2013 21:24

СлаваRa хорошая тема. Спасибо, пригодится

А чего теперь даже не поблагодарить? Сняли с форума этот изыск?


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

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