Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как создать класс (http://www.flasher.ru/forum/showthread.php?t=102502)

Волгоградец 16.10.2007 11:54

Как создать класс
 
Привет. Подскажите, как создавать классы. Вот, например, я написал код для движения клипа на место клика на сцене (он не претендует на звание самого оптимального):
Код:

//**********Движение клипа при клике********
var speed: Number = 3; //скорость движения
var dx:Number = null; //движение по оси х
var dy:Number = null; //движение по оси у
_root.onMouseDown = function (){ //функция при клике мышкой на рабочем поле
        a = this._xmouse;
        b = this._ymouse;
        find_dd ();
        move ();
}

function find_dd (){ //расстояние от места клика до клипа
        true_lenx = a - mc._x;
        true_leny = b - mc._y;
        len_x = Math.abs(true_lenx);
        len_y = Math.abs(true_leny);
}

function move (){ //движение клипа
        mc.onEnterFrame = function (){
                if (len_x >= len_y){ //из подобия треугольников получаем зависимость х от у
                        dx = speed;
                        dy = len_y*dx/len_x;
                }
                if (len_x < len_y){
                        dy = speed;
                        dx = len_x*dy/len_y;
                }
                if (this._x >= a){ //проверяем условия при положении клипа в разных местах
                        this._x -= dx;
                        if (this._x <= a){
                                this._x = a;
                        }
                } else {
                        this._x += dx;
                        if (this._x >= a){
                                this._x = a;
                        }
                }
                if (this._y >= b){
                        this._y -= dy;
                        if (this._y <= b){
                                this._x = b;
                        }
                } else {
                        this._y += dy;
                        if (this._y >= b){
                                this._y = b;
                        }
                }
                if (this._x == a && this._y == b){
                        delete this.onEnterFrame;
                }
        }
}

Я знаю, что для того, чтобы создать класс - надо записать этот код в отдельном txt файле с расширением as. Но в таком виде он естественно работать не будет. Как его записать, чтоб в дальнейшем вызывать его одной строкой и для любого клипа? Заранее спасибо.

relevance4 16.10.2007 12:17

в директории с твоим *.fla создаёшь Test.as
внутри Test.as
Код:

class Test {
  public function Test(args){
  }
}

чтобы подключить класс: import Test;

Волгоградец 16.10.2007 12:27

Т.е. если изменяются только имя клипа и скорость, нужно записать
Код:

class Test {
  public function Test(mc: Movie Clip, speed: Number){
  }
}

А затем
Код:

import Test;
mc = new_clip;
speed = 10;

Правильно?
P.S.: сам не могу проверить - на работе флэш не установлен.

alexcon314 16.10.2007 13:41

Код:

import Test;
var my_test:Test = new Test(mc, speed);

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

screamge 16.10.2007 13:53

Советую книжку какую-нибудь взять и почитать, а то дискус может долгий разрастись.

Волгоградец 16.10.2007 16:35

Спасибо. Купил Мука, но пока че то нипонятно... Может быть еще что-то посоветуете - именно по классам?

alexcon314 16.10.2007 16:49

ООП - технология, охватывающая не только AS. В нете о ней масса инфы.
Выбирайте на свой вкус любой источник. поиск рулит.
мук - одна из достойных книг по этой теме, имхо.
Нужно потратить время и силы, разобраться, примеры проштудировать. Это не дело одного дня, недели, а мож и месяца...:)
Цитата:

"Не будем нервничать и не спеша во всем разберемся"

Волгоградец 16.10.2007 17:01

Я бы даже сказал и года... Всем спасибо.


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

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