Просмотр полной версии : Как создать глобальную функцию в ActionScript3.0?
У меня есть пакет с классом
package zoo{
public class VirtualZoo{
public function IsWin(){
// Глобальная функция
}
}
}
Теперь, что нужно сделать, что бы создать глобальную функцию, которая будет доступна из любой части программы? Расскажите поэтапно, а то никак не пойму!
public function - это и есть глобальная функция
Вы можете сделать такую функцию статичной, тогда доступ к ней будет отовсюду, через имя класса.
"Поэтапно":
package zoo{
public function isWin():Boolean {
// Глобальная функция
}
}
package zoo{
public class VirtualZoo{
public static function IsWin(){
// Глобальная функция
}
}
}
из другого класса обращаться так
VirtualZoo.IsWin();
но функция будет привязана не к экземпляру класса, а к самому классу, и соответственно может работать только со статичными переменными класса. Но из экземпляров можно менять значение этих статичных переменных.
caseyryan
22.12.2013, 11:02
Wolsh правильно сказал, только не уточнил как все надо делать.
Если хотим глобальную функцию, без всяких импортов, то делаем так:
создаем в корневом каталоге файл .as с названием, соответствующим названию функции, например someFunc.as
а в нем пишем
package {
public function someFunc(a:Number, b:Number):Number {
return a * b;
}
}
Это будет глобальная функция, возвращающая произведение двух параметров
Это справедливо не только для функций
Мне говорили, что глобальные функции не есть ООП и по - хорошему их пользуют только быдлокодеры, расскажите почему? Очень таки полезно ведь, чтоб простыни не писать...
Я например, считаю JavaScript больше ООП чем AS3. Это моя т.з.
Akopalipsis
23.12.2013, 23:04
я не знаю, что такое "глобальная", но если речь о "публичном методе", то Вы возможно что то перепутали.
Без публичных методов жить невозможно, но такое высказывание я слышал о публичных свойствах.
Хотя я наверное ошибся и без них можно, тогда надо будет посылать данные вместе с событиями, но мне кажется,
что лучше сделать публичный метод с возвращением значения.
Программировать надо технологично, а вовсе не объектно ориентированно.
MikroAcse
23.12.2013, 23:21
Akopalipsis, Вы просто обожаете усложнять себе жизнь!
Akopalipsis
23.12.2013, 23:33
Akopalipsis, Вы просто обожаете усложнять себе жизнь!
То есть, если в обьекте создать обьект, то лучше к нему обращаться, через третий обьект, в котором будет в цикле проверяться соответствие на данное событие? По Вашему калбек это вред?
Вызовы? Смотря сколько их если рекурсивная функция - то беда однако... И тут внимательнее надо, а то на каждый вызов можно получить новый экземпляр класса...
На Яве после AS3 я зашёл первый раз и не увидел в 95% случаев существенных различий, просто на яве синтаксис по-определению не даёт писать быдлокод в простыню...
А вообще, существенные минусы использования глобальных функций и переменных? хоть кто - то?
ZackMercury
23.12.2013, 23:50
По Вашему калбек это вред?
Если я вас правильно понял, то не вред, но разрушение структуры ООП.
Если делать красиво, то объект имеет набор функций и событий для работы с ним, мы можем создать несколько его экземпляров и вообще не интересоваться его внутренним устройством. Но обращение вверх по композиции рушит эту структуру. Если следовать стандарту, то можно создать объект, который можно юзать в любых проектах. Если же обращаться вверх, то под каждый проект придется переписывать код класса.
Добавлено через 3 минуты
Кроме того, это приведет к путанице и непонятным ошибкам.
Мне говорили, что глобальные функции не есть ООП и по - хорошему их пользуют только быдлокодеры, расскажите почему? Очень таки полезно ведь, чтоб простыни не писать...
Тогда получается, что все, кото использует Math - быдлокодеры
просто на яве синтаксис по-определению не даёт писать быдлокод в простыню...
Не, это даже для художественного эпитета ни в какие ворота
Кстати, у as3 как языка(не сравнивая API платформ - это бесполезно) наряду с кучей недостатков всё же есть преимущество перед Java: там можно передать ссылку на метод, а не только на объект, хотя и без проверки типов на этапе компиляции.
А вообще, существенные минусы использования глобальных функций и переменных? хоть кто - то?
Без кода - это всё болтология. Приведите пример, где вы используете статическую функцию
А в общем виде статические функции надо различать по тому, используют ли они еще и статические переменные или не используют
Если не использует - то ничего страшного, такая функция без проблем в любой момент может быть перекинута на объект, буде то необходимо
А вот если использует, то могут начаться проблемы с глобальным состоянием, хотя это уже проблемы класса, а не функции, однако...
Короче, без кода это получается беспредметное расписывание вариантов, ни о чём
Нет же, уважаемый, не моё мнение о глобальных функциях и переменных, просто бытует такое мнение, что это уже не ООП в ООП нет глобальных переменных и функций, синглтоны онли.
Я просто спросил есть ли примеры, когда глобальные функции или переменные вредят коду,а не улучшают читабельность кода и расширяемость.
Я и сам, впрочем, любитель глобального, опять - же бытует мнение, что глобальные переменные и функции жрут память, алсо динамические функции и переменные глобально сделать можно, зачем - же статика... хотя костыль...
Тут вопрос встаёт ребром позже, откуда тащить переменные если их запихивать в майн и тащить в классы из майна получается ужас, читать нельзя, сжечь.
Но я слышал возникает много технических проблем т.е. передача типа итд, помимо проблем наследования, хотелось бы услышать мнение опытных товарищей...
ZackMercury
24.12.2013, 03:30
в ООП нет глобальных переменных и функций, синглтоны онли.
Unknown Error: Compiler died when read that. Please, reinstall mxml...
at line 2, №17.
ОО вероятно определяется ключевым словом new
я не знаю, что такое "глобальная"
которая будет доступна из любой части программыЭто функция, не принадлежащая экземпляру и не принадлежащая классу/статическая (поэтому никогда не говорят "глобальный метод"). Вы просто импортируете саму функцию в любом классе программы и пользуетесь.
Мне говорили, что глобальные функции не есть ООПЭто не ООП концептуально, ибо нет Объекта-хозяина функции (метода). Однако, с другой стороны, есть ли смысл создавать Класс, чтобы пользоваться его единственной функцией?
Wolsh, а с технической точки зрения проблем от такого подхода с глобальными переменными и функциями не возникнет, чисто теоретически?
alexcon314
24.12.2013, 10:14
С технической точки зрения нужно просто держать зарубку на носу "эта функция/переменная висит в вакууме где-то в коде и хз что из себя представляет и зачем нужна", а в остальном все в порядке.
чтиво (http://www.gunsmoker.ru/2011/04/blog-post.html) для теоретиков.
Недавно тут еще обсуждали тему про "держать весь код приложения в одном файле". Из той же оперы.
alexcon314, не стоит привлекать физические понятия такие как "ваккум". Вы понятия не имеете где хранятся такие переменные. Память далеко не ваккум.
alexcon314
24.12.2013, 19:46
Спарведливости ради, сравнивать память с вакуумом нельзя все же. Собственно, и в мыслях не было, но раз так... Исправил пост.
Речь шла о пользе/вреде глобальных переменных и функций. Это так, к слову.
Тут (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/package.html) перечислены нативные top level константы и функции.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.