Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как можно вызвать функцию из другого файла .as? (http://www.flasher.ru/forum/showthread.php?t=199047)

ndiezel 12.05.2013 02:18

Как можно вызвать функцию из другого файла .as?
 
Всем привет.

Пишу игру и у меня получается ну очень большой файл с кодом. Становится уже довольно трудно в нём находить то, что надо. И ужать его я никак не могу, поскольку выносить функции в другие файлы можно, но тогда ведь придётся подключать функции из этих файлов с помощью addChild или нет?

Получается я делал как, если мне нужна функция из другого файла, я подключаю его как мувик и аттачу к сцене или делаю функцию статической и ею можно пользоваться, если файл импортировать. Но если в файле есть ещё другие функции и переменные, то функция может и не работать.

Есть вообще варианты, чтоб просто вынес функцию или функции в отдельный файл и эти файлы потом как-то собирать "в кучу"? Ато уже надоело по тысяче строк кода искать переменную. Даже и с помощью поиска...

expl 12.05.2013 03:09

1. Создайте файл "functions.as"
2. Положите рядом с вашим as-файлом
3. В вашем as-файле в том месте, где предполагается расположение этих функций напишите
Код AS3:

 
include "functions.as"


ndiezel 12.05.2013 11:45

Цитата:

Сообщение от expl (Сообщение 1132840)
1. Создайте файл "functions.as"
2. Положите рядом с вашим as-файлом
3. В вашем as-файле в том месте, где предполагается расположение этих функций напишите
Код AS3:

 
include "functions.as"


Благодарю.
Но я про этот способ знаю. При этом функции должны быть статическими и если оперируют переменными, которых в этом файле нет, перменные должны быть переданы. Или должны быть глобальными.

Ещё какие-то способы есть?
Т.е. чтоб по сути был как один файл as, просто разбитый на несколько? Без присвоения функциям статических свойств.

Psycho Tiger 12.05.2013 12:38

include – инструкция препроцессора, который просто вставляет содержимое файла а в файл б. Без всяких проверок на синтаксис и семантики. Они происходят позже.

expl 12.05.2013 13:56

Цитата:

При этом функции должны быть статическими и если оперируют переменными, которых в этом файле нет, перменные должны быть переданы. Или должны быть глобальными.
Да какими угодно. Это тоже самое, что написать текст, что лежит в functions.as прямо в вашем файле.

Цитата:

Ещё какие-то способы есть?
Т.е. чтоб по сути был как один файл as, просто разбитый на несколько? Без присвоения функциям статических свойств.
Вообще as3 - ООП язык, логической единицей кода в нём являеются:
- класс
- интерфейс
- функция уровня пакета
На класс положено заводить один файл с названием идентичным названию класса
На интерфейс положено заводить один файл с названием идентичным названию интерфейса
На функцию уровня пакета положено заводить один файл с названием идентичным названию функции
Однако, в том же файле, что и класс/функция уровня пакета можно определить вспомогательные классы вне конструкции package ... {}. Пользоваться ими сможет только главный класс в файле.
Расположить 2 класса в файле или назвать класс не так как название файла компилятор вам не даст.
Если классы лежат в одном пакете - то они видны друг другу напрямую, если в разных - надо пользоваться директивой import, чтобы прописать пакет, в котором лежит класс.

Цитата:

но тогда ведь придётся подключать функции из этих файлов с помощью addChild или нет?
Во as3, кроме классов созданных вами, есть _нативные_ классы - API флешплеера (Sprite, MovieClip, Math, ...)
addChild - это всего лишь метод экземпляра _нативного_ класса DisplayObjectContainer, от которого наследуется Sprite. И он добавляет экземпляр класса DiplayObject child в экземпляр класса DisplayObjectContainer (в рантайме):
Код AS3:

container.AddChild(child)

С чего вы взяли, что им можно подключать код - не понятно.

Директиву include посоветовал, чтобы не нагружать вас этими концепциями - её практически не используют.
А если дальше программировать на as3 собираетесь придётся нагрузиться концепциями по-хлеще классов/экземпляров классов.
А если вы больше не собираетесь притрагиваться к as3, а игра готова на 80% - используйте include, чтобы не тратить время на обучение.

ndiezel 12.05.2013 19:22

expl, благодарю за столь развёрнутый ответ. Признаться я бы - обломался столько писать кому-то на форуме )

Я, к сожалению затупил, когда писал предыдущий вам ответ. include - это как раз то, что было нужно. Перепутал с import.
Про классы интерфейсы и т.д. я уже с горем пополам разобрался, а вот include - очень не хватало, поскольку файл, в котором прописан основной движок - очень уж разросся...

Ещё раз благодарю.
Это было то, что нужно


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

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