Вопрос скорее теоретический, просто ничего внятного нагуглить не удалось, но интересно возможно ли так сделать или нет. В процессе кодинга на флексе попробовал реализовать эту фишку но не получилось.
Есть свой кастомный 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