Создание своего класса.
|
|
ggman | Дата: Среда, 01 Февраля 2012, 22:33 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Всем доброго времени суток. Начал создавать свой класс и вот что получилось: Тело класса: Code package {
public class Syst { public function dis (x1:Number, y1:Number, x2:Number, y2:Number):Number { var result:Number; //всякие вычисления return result; } } }
тепрь чтобы проверить как все работает пишу в кадре:
Code import Syst; var nums: Number; nums = dis(ob1.x,ob1.y,ob2.x,ob2.y); trace(nums);
Но на выходе получаю:
Монтажный кадр 1, слой "Слой 1", кадр 1, строка 3 1180: Вызов предположительно неопределенного метода distance.
Подскажите, пожалуйста, где я ошибся.
|
|
| |
noTformaT | Дата: Среда, 01 Февраля 2012, 22:36 | Сообщение # 2 |
Ukrainian independent game developer
Сейчас нет на сайте
| import Syst; var mySyst:Syst = new Syst; var nums = mySys.dis(ob1.x,ob1.y,ob2.x,ob2.y); trace(nums);
@noTformaT
|
|
| |
ggman | Дата: Среда, 01 Февраля 2012, 22:58 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| Спасибо. Еще такой вопрос. А как нужно переоформить файл Syst.as чтобы можно было просто импортировать его и использовать функции которые в нем прописаны?
Сообщение отредактировал ggman - Среда, 01 Февраля 2012, 23:01 |
|
| |
noTformaT | Дата: Среда, 01 Февраля 2012, 23:00 | Сообщение # 4 |
Ukrainian independent game developer
Сейчас нет на сайте
| ggman, никак.... только либо сделать некоторые его методы статическими...
@noTformaT
|
|
| |
ggman | Дата: Среда, 01 Февраля 2012, 23:19 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Да нет, шаманство же. Должен же быть какой-то способ чтобы можно было, как в C++ просто подключить библиотеку, а затем так же просто писать nums = dis(ob1.x,ob1.y,ob2.x,ob2.y); без создавания дополнительных объектов.
|
|
| |
noTformaT | Дата: Среда, 01 Февраля 2012, 23:33 | Сообщение # 6 |
Ukrainian independent game developer
Сейчас нет на сайте
| такого нет... ас3 это не процедурный яп...
@noTformaT
|
|
| |
ggman | Дата: Среда, 01 Февраля 2012, 23:37 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| жаль. А через Quote (noTformaT) сделать некоторые его методы статическими... Это как реализовать, не подскажешь?
|
|
| |
noTformaT | Дата: Среда, 01 Февраля 2012, 23:45 | Сообщение # 8 |
Ukrainian independent game developer
Сейчас нет на сайте
| Quote (ggman) Это как реализовать, не подскажешь? ну, я изучал эту часть яп, вот по этой документации
@noTformaT
|
|
| |
ggman | Дата: Четверг, 02 Февраля 2012, 00:20 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| Спасибо. Просто странно. Когда пишу все в кадре:
Code function dis (x1:Number, y1:Number, x2:Number, y2:Number):Number { var result:Number; //всякие вычисления return result; } var nums: Number; nums = dis(ob1.x,ob1.y,ob2.x,ob2.y); trace(nums); , то все работает.
А когда я попытался вынести функция в отдельный файл, то вдруг ошибки. Странно все это.
Сообщение отредактировал ggman - Четверг, 02 Февраля 2012, 00:20 |
|
| |
noTformaT | Дата: Четверг, 02 Февраля 2012, 00:31 | Сообщение # 10 |
Ukrainian independent game developer
Сейчас нет на сайте
| все что связано с кадрами, это особенность АдобФлеша.... в данном случае функция dis, на этапе компиляции станет методом объекта, в кадре которого она написана, поэтому работает. Просто их компилятор немного больше функциональнее...
@noTformaT
|
|
| |
KOHb | Дата: Четверг, 02 Февраля 2012, 04:55 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| Попробуй сделать со static методами. И подучи AS, так будет правда проще :>
|
|
| |
SoWa | Дата: Четверг, 02 Февраля 2012, 08:36 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| Code public static function dis (params:*):Number { ... } И вызывай так: Code import Syst;
var someNum:Number = Syst.dis(); директива static указывает, что метод dis принадлежит всему классу, а не конкретным экземплярам, и вызывается он через имя класса, как ты мог заметить в коде выше.
ActionScript-программист. Так же Flash Media Server, C#, PHP. Рисовать не умею и не люблю. Ищу проект, желательно где есть грамотный менеджер, дизайнер и художник.
|
|
| |
KOHb | Дата: Четверг, 02 Февраля 2012, 14:11 | Сообщение # 13 |
частый гость
Сейчас нет на сайте
| SoWa, точно. Т.е. бывают динамические и статические поля/методы. Стоит заметить, что для использования статических не нужно создавать экземпляр. Такие методы часто объединяются в классы-утилиты.
|
|
| |
ggman | Дата: Четверг, 02 Февраля 2012, 21:31 | Сообщение # 14 |
постоянный участник
Сейчас нет на сайте
| Спасибо всем, кто помогал. Особенно, за мануал.
/*кривой, но все же стих*/
|
|
| |