Понедельник, 05 Декабря 2022, 13:27

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Adobe Flash и Создание флэш-игр » Создание своего класса. (Небольшие ошибки)
Создание своего класса.
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
постоянный участник
Сейчас нет на сайте
Спасибо всем, кто помогал.
Особенно, за мануал.

/*кривой, но все же стих*/
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Adobe Flash и Создание флэш-игр » Создание своего класса. (Небольшие ошибки)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг