PDA

Просмотр полной версии : Как использовать mx.core.Application в классе AS?


ovechkin
06.08.2010, 12:36
Пишу утильный класс типа

package utils
{
public class Utils
{
public function Utils()
{
}
//import *.*;
import mx.core.Application;
public static function disableApplication(app:Application, time:String):void {
app.enabled = false;
if(time!=null) {
setTimeout(enableApplication, Number(time));
}
}

public static function enableApplication(app:Application):void {
app.enabled = true;
}
}
}
}

этот класс планируется использовать в другом классе, а не в mxml файле.
Конкретно - хочется вызывать функцию disableApplication с параметром Application.
Как передать этот параметр в функцию?

wvxvw
06.08.2010, 14:06
Импорты принято писать вне определения класса. Ну и проверки типа time != null попахивают, а так вполне нормальный код.
Да, и используйте Timer вместо setTimeout.

ovechkin
06.08.2010, 14:29
Импорты принято писать вне определения класса. Ну и проверки типа time != null попахивают, а так вполне нормальный код.
Да, и используйте Timer вместо setTimeout.

А вы вопрос мой прочитали?

wvxvw
06.08.2010, 15:17
Да, а что именно не получилось? Например, этот код в вашем наследнике Application:
Utils.disableApplication(this)

ovechkin
06.08.2010, 15:38
wvxvw, я этот метод хочу использовать в другом классе, а не в mxml файле.
в этом то и проблема.
Надо как-то вычленить из mxml файла объект Application и передать его в функцию.


import utils.Utils;
public class Foo {
public function doSomething() {
Utils.disableApplication( вот здесь должен быть объект класса Application, null);
}
}


Кстати, за замечания спасибо!

wvxvw
06.08.2010, 15:51
MXML файлы - это классы... так что вашу логику я как-то не улавливаю... пожалуйста.

ovechkin
06.08.2010, 16:06
:)
Ну короче как в класс Utils передать объект Application ?

Добавлено через 4 минуты
я не знаю как ещё объяснить....
например так:

public class SomeClass {

public function disableApp():void {
Application.application.enabled = false;
}

Как добиться того, чтобы из другого класса использоваться объект Application?

Добавлено через 7 минут
Прошу прощения!!!
я только что написал именно так в классе SomeClass:
public function disableApp():void {
Application.application.enabled = false;
}

Не думал, что класс Application глобальный и виден ото всюду.

Ещё раз извините.

Волгоградец
06.08.2010, 16:17
Передать сначала Application этому классу из самого Application.

wvxvw
06.08.2010, 17:51
ovechkin: код нужно оформлять тегами (http://www.flasher.ru/forum/misc.php?do=bbcode). Application не глобальный класс. "Глобальным" класс становится когда он доступен из безымянного пакета. Использование Application.application - это костыль, и так делать не нужно никогда.