Чтобы ответить на более общий вопрос: импорт является предпочтительным способом включения внешних файлов. По моему мнению, оператор include
следует использовать только тогда, когда больше ничего не будет делать, поскольку он несколько усложняет отладку, если что-то идет не так и делает код обычно более трудным для чтения и понимания. Описание Ассафом того, что import
и include
делают правильно.
И затем для более конкретной проблемы, которую вы, похоже, имеете: вы, вероятно, пытаетесь
testing.init();
прямо в блоке <script>
- попробуйте поместить его в метод. У вас должны быть только такие вещи, как import
операторы и объявления членов (переменные, функции) непосредственно в блоке скрипта и подобные операторы в функциях.
Вы видите это сообщение об ошибке, потому что, когда вы вызываете метод init()
этого объекта, он еще не был создан - этот оператор будет выполнен, когда определено определение класса, который представляет ваш файл MXML. загружен; вам нужно, чтобы он выполнялся, когда был создан конкретный экземпляр этого класса, и вы можете сделать это, вызвав его в конструкторе класса (насколько я знаю, это невозможно при написании класс, использующий MXML, так что читайте дальше :) или, например, в функции-обработчике для события FlexEvent.CREATION_COMPLETE
(или creationComplete
в терминах атрибутов тега MXML) (см. пример ниже.)
Попробуйте что-то вроде этого:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
width="800" height="600"
creationComplete="creationCompleteHandler();"
>
<mx:Script>
<![CDATA[
import lib.Journal;
public var testing:Journal = new Journal();
private function creationCompleteHandler():void
{
testing.init();
}
]]>
</mx:Script>
</mx:Application>