Доступ к основной функции из компонента - PullRequest
0 голосов
/ 06 декабря 2010

Как получить кнопку «Закрыть» для запуска runFunction() из компонента во внешнюю декларацию?FxGlobals.topLevelApplication, похоже, не работает для этого.

<fx:Declarations>
        <fx:Component className="MyNativeWindow">
            <s:Window>
                <s:BorderContainer width="100%" height="100%">
                <s:backgroundFill>
                <s:LinearGradient>
                    <s:GradientEntry color="0x555555"/>
                    <s:GradientEntry color="0x777777"/>
                    </s:LinearGradient>
                </s:backgroundFill>
                <mx:Button y="263" x="420" label="close" click="runFunction();this.close()"/>   
                </s:BorderContainer>
            </s:Window>
        </fx:Component>
    </fx:Declarations>

1 Ответ

1 голос
/ 06 декабря 2010

Во-первых, вы не должны этого делать, подробнее об этом через минуту ...

Если вы должны это сделать (скажем, по какой-то деловой причине)

Вы должны иметь доступ к приложению верхнего уровня, как это ...

<fx:Declarations>
    <fx:Component className="MyNativeWindow">
        <s:Window>
            <s:BorderContainer width="100%" height="100%">
            <s:backgroundFill>
            <s:LinearGradient>
                <s:GradientEntry color="0x555555"/>
                <s:GradientEntry color="0x777777"/>
                </s:LinearGradient>
            </s:backgroundFill>
            <mx:Button y="263" x="420" label="close" click="(FlexGlobals.topLevelApplication as MyApplicationType).runFunction();this.close()"/>   
            </s:BorderContainer>
        </s:Window>
    </fx:Component>
</fx:Declarations>

Замена MyApplicationType типом вашего приложения.

Теперь, к моему, , не делайте этого примечания выше. Ваш компонент не должен вызывать зависимые функции таким образом, вместо этого вы должны обрабатывать это событие кнопки click, используя функцию-обработчик, которая затем запускает событие уровня компонента, которое обрабатывается на каждом уровне вверх по дереву компонента, вплоть до Приложение, если это где это событие должно быть обработано.

Однако простое указание сделать это, не зная остальной структуры вашего приложения, не сильно поможет, скорее всего, вам нужно будет создать беспорядок, прежде чем вы поймете, почему его нужно убирать.

Но в качестве полезного совета всегда старайтесь модульно модифицировать свое приложение, разделяя функциональные обязанности на соответствующие классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...