2011-01-10 2 views
0

У меня есть 2 файла: Main.mxml с приложением и один MyObject.as. Я создаю экземпляр MyObject в mxml и могу вызвать его каждую публичную функцию из mxml. Но что, если по какой-то причине мне нужно вызвать некоторую функцию, объявленную в mxml из класса MyObject? Как это сделать? Я думал, что я мог бы передать ссылку на main.mxml класса в этот объект, но я не мог понять, какой именно класс его (он наследует приложения, правое, но какие именно класс это?)Как вызвать некоторую функцию mxml из класса?

Благодарности

ответ

3

Это тип Main (он принимает имя файла mxml). Вы можете добавить статическую переменные и метод получения к нему:

private static var _instance : Main; 

public static function get instance() : Main { 
    return _instance; 
} 

Тогда пусть экземпляр относится к this после применения завершено:

private function applicationCompleteHandler():void 
{ 
    _instance = this; 
} 

Не забудьте установить applicationComplete="applicationCompleteHandler" в вашем <mx:Application> теге. После этого вы можете позвонить Main.instance из любой точки вашей программы, чтобы получить доступ к методам и переменным.

+0

Спасибо за комментарий. Я попробую и скажу, работает ли это для меня. – mimic

+0

Спасибо, это сработало для меня. – mimic

0

Если вы создаете экземпляр класса MyObject в вашем Main.mxml, вы также можете выполнить доступ к методу в Main, передав метод как функцию в объект.

Предположим, что вы имеете в Main.mxml функцию:

private function doSomething():*{ 
    ... 
} 

С соответствующим сеттер в MyObject.as:

private var _mainFunction:Function; 

public function set mainFunction(f:Function):void 
{ 
    _mainFunction = f; 
} 

Затем вы можете передать метод, когда экземпляр класса MyObject в MXML:

<*:MyObject mainFunction='doSomething'/> 

И теперь вы просто позвоните _mainFunction в коде MyObject.as когда вам это нужно.

Конечно, предложение Weltraumpirat было бы более эффективным, если бы вам нужно было получить доступ к более чем одному методу и/или переменной в вашем приложении.

+0

Спасибо ... еще раз – mimic

Смежные вопросы