как поместить вложенную функцию actionscript в проекте actionsript в отдельный файл actionscript?

#apache-flex #actionscript

#apache-flex #actionscript

Вопрос:

Я использую Flash Builder 4.5. В файле .mxml, если вы хотите использовать функцию actionscript, находящуюся во внешнем файле .as, ее просто добавляют к файлу .mxml:

 <fx:Script source="filename.as"/>
  

где filename.as содержит функцию (ы) actionscript.

Есть ли способ сделать аналогичную вещь из файла проекта .as? То есть у меня есть проект actionscript, созданный во Flash Builder 4.5 (например, нигде нет файлов .mxml), и у меня есть вложенная функция actionscript. Как я могу поместить эту вложенную функцию actionscript во внешний файл, а затем вызвать ее из исходного файла? Моя цель — вызвать эту вложенную функцию actionscript из нескольких других файлов, чтобы мне не приходилось вставлять ее несколько раз.

Ответ №1:

Самый простой способ сделать это — использовать статическую функцию. Создайте файл класса AS и удалите конструктор. Теперь поместите в него свою функцию и задайте тип «public static», вот пример простого класса «stirng utility».

 package some.place.inyourapp
{   
  public class StringUtils 
  {

    public static function contains( string:String, searchStr:String ):Boolean
    {
        var regExp:RegExp = new RegExp( searchStr, "i" );           
        return regExp.test( string );           
    }
  }
}
  

Теперь вы можете вызвать эту функцию, не создавая экземпляр класса где-либо в вашем приложении, сказав:

StringUtils.contains("this is cool","cool")

Конечно, StringUtils должны быть импортированы

import some.place.inyourapp.StringUtils

Комментарии:

1. Спасибо, Джонатан, какова цель «содержит» выше?

2. Это просто пример функции… ваш может быть любым. Пока вы устанавливаете тип в static, вы можете получить к нему доступ в любом месте, не создавая экземпляр объекта.

3. О, я думал, что «содержит» — это ключевое слово AS3, но теперь я понимаю, что это имя, которое вы выбрали для функции. Какой я глупый!

Ответ №2:

Хотя это не рекомендуется, вы могли бы использовать include оператор.

 ...
include "myFile.as";
...
  

Комментарии:

1. @ggkmath Это старомодный / не объектно-ориентированный подход. Это затенит ваш код и затруднит его чтение и сопровождение. Я бы рекомендовал использовать решение Джонатана, если это возможно для вас.