PDA

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


Pasha L
07.07.2007, 17:31
Здравствуйте. Вопрос про создание своих классов. У меня флэш 8 профешинал. Как я понял, классы можно объявлять только в *.as файлах и только по одному классу в файле. Тогда как же осуществить такое вот дело:
Есть класс ТПлоскость (первый файл), внутри него есть массив из объектов класса ТТочка (его я объявлю уже в другом файле). Также, я хочу чтобы класс ТТочка содержал в себе ссылку на содержащюю её плоскость (на объект класса ТПлоскость). Как же всё это замутить? Может, нужно как-то файл с хэдерами сделать?

etc
07.07.2007, 19:06
Не стоит использовать в именах классов Delphi-овские замашки.

Передать ссылку на плоскость можно через конструктор точки.

Pasha L
07.07.2007, 19:17
Поподробнее можно? Напишите, пожалуйста, код небольшой, наглядный.

Это не "замашки", как вы выразились. Просто это удобно.

etc
07.07.2007, 19:25
Это удобно в Delphi, но не в ActionScript.

Что именно непонятно в моих словах? Что такое конструктор и как передавать в него параметры, вы знаете?

Pasha L
07.07.2007, 19:34
значит так:
я должен просто создать необходимые файлы с необходимыми классами в них. Ничего, что, к примеру, класс А фигурирует в описании класса Б и наоборот. Я создаю эти файлы. Затем уже во фла-файле я просто пишу #include файлов А и Б ?

--

Почему неудобно такое оформление?

etc
07.07.2007, 19:46
Не include, а import. Я не очень понял, где вы собираетесь создавать экземпляры класса Б и что конкретно хотите сделать. В А создаются экземпляры Б, в конструктор которых передается ссылка на А (this, проще говоря).

з.Ы. Неудобно тем, что никакой пользы буква «T» в себе не несет, совершенно. Только лишний раз её набрать. Стандарт именования во ActionScript не такой, как в Delphi, где что переменные, что методы, что классы — все под одну гребенку начинаются с прописной буквы и «T» в названии лишь говорит, что TWindow — это класс, а Window может быть методом, переменной и чем угодно. Во ActionScript названия переменных, методов, свойств начинаются со строчной буквы. С прописной только названия классов и константы (названия констант целиком в верхнем регистре).

Pasha L
07.07.2007, 19:55
Так. Ещё раз просьба: напишите небольшой код из двух классов :)

А насчет стандартов - да черт с ними, кому как удобно

etc
07.07.2007, 20:16
class MyPoint {
private var _plane:Plane;
public function MyPoint(plane:Plane) {
this._plane = plane;
}
}
class Plane {
public function Plane() {
for (var i:Number = 0;i < 10;i++) {
var point:MyPoint = new MyPoint(this);
}
}
}

Pasha L
07.07.2007, 20:39
Проверяю ошибки в этих скриптах:
**Error** D:\Новая папка\Plane.as: Line 1: The name of this class, 'Plane', conflicts with the name of another class that was loaded, 'Plane'.
class Plane {

Total ActionScript Errors: 1 Reported Errors: 1



и



**Error** D:\Новая папка\Plane.as: Line 1: The name of this class, 'Plane', conflicts with the name of another class that was loaded, 'Plane'.
class Plane {

Total ActionScript Errors: 1 Reported Errors: 1

etc
07.07.2007, 21:00
Проекты нельзя хранить в папках с русскими названиями.

Pasha L
07.07.2007, 21:04
изменил имя на беспробельное латинское - и то же самое

etc
07.07.2007, 21:05
Гм, ну это вообще редкий баг.
Попробуй Control > Delete ASO Files And Test Movie.

Pasha L
07.07.2007, 21:06
ладно. С вашими примерами всё равно вылезают ошибки :)
но со своими я уже разобрался, вроде получается. Спасибо большое

etc
07.07.2007, 21:12
Только что проверил, у меня все работает нормально.

Pasha L
07.07.2007, 21:45
да... реально баг... он решается закрытием и открытием флэша... или переставлением закладок пару раз...