Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   ItemRenderer,TileList и другие :) (http://www.flasher.ru/forum/showthread.php?t=118327)

RetKiller 20.11.2008 16:34

ItemRenderer,TileList и другие :)
 
Собственно,я уже задавал тут вопрос про работу с ItemRenderer.Тогда проблема удачно решилась.Теперь возник еще вопрос.
А в принципе возможно после создания объектов ItemRenderer'ом обращаться к ним потом?Поясню на примере:

Код AS3:

<mx:itemRenderer>
        <mx:Component>
                <mx:VBox horizontalAlign="center" verticalAlign="middle">
                <mx:Script>
                        <![CDATA[
                                import mx.controls.Alert;
                        ]]>
                </mx:Script>
                        <mx:Label text="{data.title}" id="fd"/>
                        <mx:Image source="{data.thumbnail}" width="192" height="168" />
                        <mx:HBox>
                        <mx:Script>
                                    <![CDATA[         
                                      private function action():void
                                      {
                                              Alert.show("dsfsdf");
                                      }   
                                    ]]>
                                  </mx:Script>
                        <mx:LinkButton label="low" id="btLow" click="tr()" />
                        <mx:LinkButton label="stop" id="btMedium" />
                        </mx:HBox>
                </mx:VBox>
        </mx:Component>
</mx:itemRenderer>
......
 
<iv:ivVideoApplet  id="ivApp" width="100%" height="100%" />
....

Теперь требуется при нажатии на кнопку не просто чего-то писать или выполнять функции верхнего уровня документа,а выполнить что-нибудь типа ivApp.changeQuality("video.video") .

Вопрос:возможно ли это,в принципе? Начинать писать свой TileList или нет:)

Посмотреть можно здесь: http://video.integra-s.com:35643/ (login:test,pass:test).
При нажатии на кнопки low,high,medium видео в правой части должно меняться.

Спасибо за помощь,а если и не поможете,то все равно спасибо.За прочтение :)

†‡Paladin‡† 20.11.2008 17:54

Диспатчите эвент с параметрами. Главная аппликуха пускай слушает и меняется как ей надо.

RetKiller 21.11.2008 16:40

Написал вот так вот примерно
Код AS3:

......
        public function testEvent():void
        {
 
                this.addEventListener("xxxMyOwnEvent",testEventListener);
                Log2("Listener added!");
        }
        public function testEventListener(evt:Event):void
        {
                Log2("Event!"+evt.toString());
        }
 
.....
<mx:itemRenderer>
        <mx:Component>
                <mx:VBox horizontalAlign="center" verticalAlign="middle">
                <mx:Script>
                        <![CDATA[
                                import mx.controls.Alert;
                        ]]>
                </mx:Script>
                        <mx:Label text="{data.title}" id="fd"/>
                        <mx:Image source="{data.thumbnail}" width="192" height="168" />
                        <mx:HBox>
                        <mx:Script>
                                    <![CDATA[         
                                      private function action():void
                                      {
                                      var t:Event=new Event("xxxMyOwnEvent");
                                      var r:EventDispatcher=new EventDispatcher(???);
                            if (r.dispatchEvent(t)==true)                        Alert.show("YES");
 
                                      }   
                                    ]]>
                                  </mx:Script>
                        <mx:LinkButton label="low" id="btLow" click="tr()" />
                        <mx:LinkButton label="stop" id="btMedium" />
                        </mx:HBox>
                </mx:VBox>
        </mx:Component>
</mx:itemRenderer>

Понятно,что в параметр конструктора для EventDispatcher надо сунуть объект,который и будет получать эти самые эвенты. Только как его узнать?То есть в данном случае надо получить указатель на главное окно(в терминах не силен :rolleyes: ),но как,понять не могу. :(

Бармалей 21.11.2008 19:39

Диспатчер не знает кто на него подписан. В этом вся прелесть событийной модели. Поэтому просто вызовите метод dispatchEvent в своем рендерере и передайте в него инстанс необходимого события, и еще укажите bubbles = true. А кто-то извне пусть подпишется к листу на это событие.

RetKiller 24.11.2008 10:34

Спасибо огромное,всё заработало:drinks:


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

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