#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 Это старомодный / не объектно-ориентированный подход. Это затенит ваш код и затруднит его чтение и сопровождение. Я бы рекомендовал использовать решение Джонатана, если это возможно для вас.