Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Обработчик Click для объекта на стеке. (http://www.flasher.ru/forum/showthread.php?t=133808)

WhiteWoolf 13.12.2009 18:11

Обработчик Click для объекта на стеке.
 
Задача - проще некуда, а туплю второй день, выручайте, плз.

Получаю с сервера xml-файл сложной структуры. Вынимаю из него пути к изображениям-миниатюрам и вывожу их как элементы VBox. Понятно, что так как на момент написания кода количество изображений неизвестно - создаю объект Image на стеке через new и добавляю его в VBox через addChild( ... ). Это все работает. Без проблем.

Проблема в том, что надо ловить click на созданное изображение. Упорно не понимаю, как поставить обработчик. Попытался поставить его через setStyle - не получается.



Примерно, код следующий:
Код AS3:

<mx:Application ... bla-bla-bla>
        <mx:VBox id="theImageBox" x="10" y="285" width="352" height="509" />
        <mx:Script>
                <![CDATA[
                                ... bla-bla-bla
                        protected function handlerHaveDataLoader(event:Event):void {
                                m_nSeries = 0;
                                m_theSeries = theXmlLoader.responce().children();
                                m_szDescriptionSeries = m_theSeries[m_nSeries].description;
 
                                var nLength:int = m_theSeries.length();
                                for(var nIndex:int = 0; nIndex< nLength; nIndex++){
                                        var theImage:Image = new Image();
 
                                        theImage.width = 3*theImageBox.width/4;
                                        theImage.setStyle("horizontalAlign", nIndex%2==0?"left":"right");
                                        theImage.setStyle("click","handlerClick( 1 );");
 
                                        theImage.toolTip = m_theSeries[nIndex].caption;
                                        theImage.source = m_theSeries[nIndex].source;
 
                                        theImageBox.addChild(theImage);
                                }
 
                                m_theCollection = m_theSeries[m_nSeries].composition.children();
                                m_nPosition = -1;
                                nextImage();
                        }
                                ... bla-bla-bla
                ]]>
        </mx:Script></mx:Application>

Т.е. перефразируя вопрос:
как написать строку <mx:Image click="handlerClick( 1 );" /> для объекта Image созданного через new.

Кто-то поможет?

wvxvw 13.12.2009 18:47

Код:

<mx:Image id="foo" click="handlerClick( 1 );" />
Код AS3:

foo.addEventListener(MouseEvent.CLICK, this.clickHandler);
private function clickHandler(event:MouseEvent):void
{
    trace(1);
}

"click" - это ни разу не стиль, это событие...

WhiteWoolf 13.12.2009 19:05

Цитата:

Сообщение от wvxvw (Сообщение 872493)
"click" - это ни разу не стиль, это событие...

Это было понятно, было непонятно, какой вывод из этого сделать.


Все получилось. Спасибо. wvxvw - респект и уважуха.


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

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