PDA

Просмотр полной версии : Как создать класс


Волгоградец
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
Я бы даже сказал и года... Всем спасибо.