Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Создание функций без класса (http://www.flasher.ru/forum/showthread.php?t=197546)

zzSpirit 09.04.2013 05:28

Создание функций без класса
 
Доброй ночи!
В какой-то книге я читал, что функцию можно описать вне класса и может быть даже вне пакета, что-то типа такого файла получается:
Код AS3:

package sources
{
function loadImage(img_url:String):void{ /* code... */ }
}

А потом использовать функции без объекта и экземпляра, типа так:
Код AS3:

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/0...functions-as3/
Так же не забывайте, что можно создать и просто статические функции, которые так же можно будет вызывать не создавая экземпляр класса, а только через имя класса. (например как Math.sin(),Math.cos() и тд)

caseyryan 09.04.2013 08:59

Цитата:

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

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() и тд)
Ах да, как же я про статические функции забыл, в принципе удобно.

Цитата:

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

Ну, это не проблема думаю:
Код AS3:

import src.functions.*;

Тоже вполне удобный способ.

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


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

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