PDA

Просмотр полной версии : Создание функций без класса


zzSpirit
09.04.2013, 05:28
Доброй ночи!
В какой-то книге я читал, что функцию можно описать вне класса и может быть даже вне пакета, что-то типа такого файла получается:
package sources
{
function loadImage(img_url:String):void{ /* code... */ }
}
А потом использовать функции без объекта и экземпляра, типа так:
package sources
{
public class Main extends Sprite
{
public function Main():void
{
var img:Loader = loadImage("http:\/\/grupos.emagister.com\/logos_grupo/7/1/logogrupo_7174.jpg");
}

}
}

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

Если так сделать нельзя, то какие есть варианты?
Я пока придумал только так, но помоему не очень как-то - создать новый класс Functions синглтоном и в нем описать методы функций.

samana
09.04.2013, 08:06
Про глобальные функции, посмотрите тут http://code.fabian-irsara.com/2011/01/08/global-functions-as3/
Так же не забывайте, что можно создать и просто статические функции, которые так же можно будет вызывать не создавая экземпляр класса, а только через имя класса. (например как Math.sin(),Math.cos() и тд)

caseyryan
09.04.2013, 08:59
Пытаюсь по-всякому сделать, не получается. Помоему я что-то перепутал, хотя вроде что-то подобное по AS3 читал... Я хочу описать функции, которые мне понадобятся во многих классах, но как-то неправильно в каждом классе инициализировать класс функций снова, вот и ищу более красивое решение.
Есть одно ограничение. Файл, который модержит такую функцию, должен называться так же как и сама функция.
Проще говоря создаем файл someFunc.as
а в нем пишем:

package {
public function someFunc():void {
trace("функция вне класса");
}
}

Вот и все. Но эту штуку надо будет так же импортировать в нужное место, если она лежит не в корневом пакете

zzSpirit
10.04.2013, 01:50
Про глобальные функции, посмотрите тут http://code.fabian-irsara.com/2011/0...functions-as3/
Так же не забывайте, что можно создать и просто статические функции, которые так же можно будет вызывать не создавая экземпляр класса, а только через имя класса. (например как Math.sin(),Math.cos() и тд)
Ах да, как же я про статические функции забыл, в принципе удобно.

Вот и все. Но эту штуку надо будет так же импортировать в нужное место, если она лежит не в корневом пакете

Ну, это не проблема думаю: import src.functions.*;
Тоже вполне удобный способ.

Всем спасибо, вопрос решен