Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как создать событие onLoad? (http://www.flasher.ru/forum/showthread.php?t=87156)

enepx 30.10.2006 15:16

Как создать событие onLoad?
 
У меня есть класс Device. В нем я гружу данные из xml (с пом. класса XML).
У меня есть поле loaded:Boolean, которое сожержит загружен ли xml документ. НО...
Я конечно могу постоянно проверять пока оно не станет true. Можно ли как-нибудь сделать событие наподобие XML.onLoad, которое бы вызывалось после того как мой xml обработан и загружен.
Может просто приравнять как-нибудь функции XML.onLoad и мою Device.onLoad. Я пока не совсем знаю что говорю и как это сделать.
Спасибо... :confused:

MyXus 30.10.2006 15:29

Код:

...
var o:Device = this;
XML.onLoad = function() {
    o.loaded = true;
    o.onLoad();
};
...
public function onLoad() {
...
}


etc 30.10.2006 15:30

this.xml.onLoad = mx.utils.Delegate.create(this,this.onLoad);

MyXus, внешняя ссылка — это неправильно.

MyXus 30.10.2006 15:46

хочется пофлеймить чуток..
1. а почему так уж неправильно?
2. Тогда уже можно просто XML.onLoad = this.onLoad;

etc 30.10.2006 15:56

1. Потому что объявлять функции внутри метода вредно плюс лишние ссылки. Так делали в AS1.
2. Область видимости будет другой.

MyXus 30.10.2006 16:24

Цитата:

Сообщение от __etc
2. Область видимости будет другой.

Что-то я не догоняю. И так и так область видимости функции Device.onLoad будет в рамках конкретного экземпляра класса. Разве нет?

etc 30.10.2006 16:27

А ты проверь.

enepx 30.10.2006 19:58

Конечно респект, но я не понял как в итоге надо кодить-то? Можно 1-й и 2-й ответы объединить?! Спасибо..
PS. Как вообще работает класс Delegate? Где почитать? В книге по MX-версии такого еще не было.

etc 30.10.2006 19:59

Выбирай :D
Я бы использовал Delegate.

enepx 30.10.2006 21:44

не могу понять
 
Помнишь, ты мне вчера помогал уже. Смотреть тут http://flasher.ru/forum/showthread.php?t=87123
У меня все это же. Так мне теперь писать
this.xml.onLoad = mx.utils.Delegate.create(this,this.onXMLLoad); ???
И у меня в голове не укладыватся, как это будет работать?
Мне вообще нужно как в визуальных средах программирования сделать событие. Объясню подробнее...
У меня мой класс Device обрабатывает xml и забивает поля значениями из этого файла. Также есть методы, напр. getName(), кот. возващает имя девайса.
Например, делаю следущее:
Код:

var mobilePhone:Device = new Device("test.xml");
var deviceName:String = mobilePhone.getName();

Так вот ессно, что он не успевает обработать файл и сразу пишет undefined. Мне нужно, чтобы var deviceName:String = mobilePhone.getName(); вызывалась после зарузки. Типа как я делаю в классе XML (метод onLoad). Не знаю как еще объяснить, прости. Спасибо заранее...


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

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