Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Передача callBackа через MXML компоненту (http://www.flasher.ru/forum/showthread.php?t=207226)

PainKiller 02.04.2014 15:52

Передача callBackа через MXML компоненту
 
Вопрос скорее теоретический, просто ничего внятного нагуглить не удалось, но интересно возможно ли так сделать или нет. В процессе кодинга на флексе попробовал реализовать эту фишку но не получилось.
Есть свой кастомный UIComponent, в котором реализовано такое свойство clearFunction:
Код AS3:

package as3comps
{       
        import mx.core.UIComponent;
 
 
 
        public class SomeComponent extends UIComponent
        {
 
                public var clearFunction:Function;
 
 
 
 
                public function SomeComponent()
                {
                        super();
                }
 
                ...
        }
}

Я объявляю этот компонент в MXML, и пытаюсь присвоить ему функцию, объявленную там же:
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:as3comps="as3comps.*"
                xmlns:components="components.*"
                currentState="default">
        <s:layout>
                <s:BasicLayout/>
        </s:layout>
        <s:states>
                <s:State name="default"/>
        </s:states>
 
        <fx:Script><![CDATA[
 
        private function clear():void
                {
                        //делаем что нибудь
                }
]]>
        </fx:Script>
<as3comps:SomeComponent id="myID"  clearFunction="{ clear }"/>

Это подход дает рантайм эррор типа:
Код:

TypeError: Error #1006: value is not a function.
Пробовал со скобками, без, приводил к Function, ничего не получилось. Вопрос это вообще возможно? И есть ли варианты как то это реализовать?

Добавлено через 14 минут
В общем нагуглил один вариант, но если кто то знает способы получше, буду рад их услышать

Добавлено через 29 минут
в моем случае и это метод не работает, передаваемый объект пересоздается, когда уходит с экрана, и ссылка на него оказывается нерабочей

Добавлено через 1 час 0 минут
в общем через MXML передать так и не удалось, это все работает только через as3

alatar 03.04.2014 13:46

Код:

<as3comps:SomeComponent id="myID"  clearFunction="clear"/>

PainKiller 03.04.2014 16:24

Странно так тоже пробовал, не сработало с той же ошибкой, хотя может проблема и не в этом была

djyamato 04.04.2014 13:08

а событием (из компонента) этот вопрос разве нельзя решить ?
Типа:
[Event(name="name", type="flash.events.Event")]

PainKiller 10.04.2014 12:28

Конечно можно, есть много вариантов как можно это решить, я просто теоретически интересовался насчет MXML

PainKiller 01.06.2015 15:04

Вспомнил про эту старую тему, решил отписаться. Некоторое время назад у меня сработал такой способ с замыканием:

Код AS3:

 
<as3comps:SomeComponent id="myID"  clearFunction="{ function () { clear() } }"/>



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

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