Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Секрет flash.utils или функции вне классов (http://www.flasher.ru/forum/showthread.php?t=144576)

ExtendedPlay 15.09.2010 18:43

Секрет flash.utils или функции вне классов
 
Привет всем!
Возникло желание определить десяток своих часто используемых функций вне классов, то есть как бы на "TopLevel" уровне (в смысле вызов функции не через класс). Так же, как это сделано в пакете flash.utils.
Хотелось бы узнать как это можно/правильно сделать.
Пока что получилось лишь создать MyFunc.as, а в нём собсна public function MyFunc().
Есть ли возможность разместить в MyFunc.as ещё несколько публичных функций и переменных?
Заранее спасибо откликнувшимся!

iNils 15.09.2010 18:58

Цитата:

Есть ли возможность разместить в MyFunc.as ещё несколько TopLevel-функций и переменных?
Нет. Один файл - одна функция.

alatar 15.09.2010 19:03

один файл – одна функция.
опоздал :)

mikhailk 15.09.2010 19:25

Я лично это делаю статическими методами отдельного класса.
Т.е., если бы не существовало Math.random() и Math.PI - я бы сделал класс Math, а в нем - публичный статический метод random() и публичная статическая константа PI.

Если, конечно, я правильно понял, что нужно автору.

ExtendedPlay 15.09.2010 19:35

mikhailk, я тоже так делаю... все так делают))))))) хотелось бы именно понять как вынести функции из классов)

Цитата:

Один файл - одна функция.
не радует...)

Котяра 15.09.2010 19:42

Цитата:

Сообщение от ExtendedPlay (Сообщение 936187)
не радует...)

Вам что трудно сделать отдельный файл?
Это наоборот хорошо для переноса. Отдельная независимая сущность - отдельный файл.
Конечно если в CSX кодить - лишние файлы - лишняя головная боль. Но в том же FD классы, ф-ции и пакеты вообще не воспринимаются как файлы и папки - просто некая упорядоченная структура - которая отображается в дереве проекта. В Realaxy вообще нет файлов - их нужно получать экспортом.

mikhailk 15.09.2010 20:04

Цитата:

Сообщение от ExtendedPlay (Сообщение 936187)
mikhailk, я тоже так делаю... все так делают))))))) хотелось бы именно понять как вынести функции из классов)
не радует...)

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

alatar 15.09.2010 20:12

Цитата:

Приведите пример, как должно выглядеть использование такой функции в коде.
Например нак: navigateToURL()
Знакомая функция?

mikhailk 15.09.2010 20:21

видел как-то пару раз ))
тогда да.
только отдельными файлами.

У меня только идиотский вопрос, а какой в этом смысл?
Чем navigateToURL() лучше, чем Utils.navigateToURL()?

Psycho Tiger 15.09.2010 20:35

Тем, что тянув какую то функцию не нужно тянуть за собой огромный класс с кучей методов.
Цитата:

Возникло желание определить десяток своих часто используемых функций вне классов, то есть на TopLevel уровне. Так же, как это сделано в пакете flash.utils.
flash.utils. это не топ левел.

ExtendedPlay 15.09.2010 21:32

Цитата:

отдельный файл? Это наоборот хорошо для переноса. Отдельная независимая сущность - отдельный файл.
с этим, конечно же, согласен)

Цитата:

тогда да. только отдельными файлами.
в целом это уже понятно...)
пакет flash.utils просто ввёл в заблуждение - FlashDevelop открывает его декларацию одним файлом... вот и подумал, что возможно поместить в один файл несколько функций, но видимо функции типа setTimeout и getTimer - это тоже отдельные файлы по одной функции в каждом, а значит секрета flash.utils нет.

Цитата:

flash.utils. это не топ левел.
да, верно. спасибо за поправку)

mikhailk 15.09.2010 21:36

Цитата:

Сообщение от Psycho Tiger (Сообщение 936203)
Тем, что тянув какую то функцию не нужно тянуть за собой огромный класс с кучей методов.

Автор вроде говорил о 10-ти собственных функциях.

Но вообще-то, у меня складывается ощущение, что я присутствую при изобретении велосипеда. Все подсоединяемые библиотеки как правило содержат больше функций, чем используется в конкретном приложении. Так что теперь, не пользоваться библиотеками?

ExtendedPlay 15.09.2010 21:49

Цитата:

у меня складывается ощущение, что я присутствую при изобретении велосипеда
неверное ощущение, просто разговор как всегда переходит немного в другое русло и это нормально))))))))

кстати...
Цитата:

Тем, что тянув какую то функцию не нужно тянуть за собой огромный класс с кучей методов.
нет, на самом деле удобнее это не поэтому, а потому что не нужно писать SomeClass.myFunc().
Достаточно лишь myFunc()
Если функция используется 50 раз в одном приложении, лишних полкилобайта как не бывало :rolleyes:

Psycho Tiger 15.09.2010 22:06

Если бы с этой целью - препроцессором до компиляции все имена полей класса сжимались бы до 1-2 байтов.

mikhailk 15.09.2010 22:58

А вот мне, кстати, наоборот кажется, что функции, не принадлежащие никакому классу (navigateToURL,setTimeout и т.д.) - это не слишком правильно с точки зрения того же пресловутого ООП.

Логичнее было бы приписать их какому-нибудь классу (хотя бы и System). Для единообразия.

Psycho Tiger 15.09.2010 23:19

Как по мне - создание даже класса System это создание лишнего класса, который должен нести в себе какую-то смысловую нагрузку. Например в Math - туча статических методов и это удобно, потому что порой называем переменные cos, sin - тут не запутаешься, и все они четко принадлежат к математике.

Не хочу разводить холивар, но тут я не стороне Адоуба: не стоит создавать класс, который сам по себе не несёт смысловой нагрузки, но содержит какие-то common методы; Класс на то и класс, чтобы принадлежать к исполнению конкретного рода задачи, он не должен быть сборищем методов друг с другом не связанных.


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

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