Просмотр полной версии : Вопрос про создание системы классов
Здравствуйте. Вопрос про создание своих классов. У меня флэш 8 профешинал. Как я понял, классы можно объявлять только в *.as файлах и только по одному классу в файле. Тогда как же осуществить такое вот дело:
Есть класс ТПлоскость (первый файл), внутри него есть массив из объектов класса ТТочка (его я объявлю уже в другом файле). Также, я хочу чтобы класс ТТочка содержал в себе ссылку на содержащюю её плоскость (на объект класса ТПлоскость). Как же всё это замутить? Может, нужно как-то файл с хэдерами сделать?
Не стоит использовать в именах классов Delphi-овские замашки.
Передать ссылку на плоскость можно через конструктор точки.
Поподробнее можно? Напишите, пожалуйста, код небольшой, наглядный.
Это не "замашки", как вы выразились. Просто это удобно.
Это удобно в Delphi, но не в ActionScript.
Что именно непонятно в моих словах? Что такое конструктор и как передавать в него параметры, вы знаете?
значит так:
я должен просто создать необходимые файлы с необходимыми классами в них. Ничего, что, к примеру, класс А фигурирует в описании класса Б и наоборот. Я создаю эти файлы. Затем уже во фла-файле я просто пишу #include файлов А и Б ?
--
Почему неудобно такое оформление?
Не include, а import. Я не очень понял, где вы собираетесь создавать экземпляры класса Б и что конкретно хотите сделать. В А создаются экземпляры Б, в конструктор которых передается ссылка на А (this, проще говоря).
з.Ы. Неудобно тем, что никакой пользы буква «T» в себе не несет, совершенно. Только лишний раз её набрать. Стандарт именования во ActionScript не такой, как в Delphi, где что переменные, что методы, что классы — все под одну гребенку начинаются с прописной буквы и «T» в названии лишь говорит, что TWindow — это класс, а Window может быть методом, переменной и чем угодно. Во ActionScript названия переменных, методов, свойств начинаются со строчной буквы. С прописной только названия классов и константы (названия констант целиком в верхнем регистре).
Так. Ещё раз просьба: напишите небольшой код из двух классов :)
А насчет стандартов - да черт с ними, кому как удобно
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);
}
}
}
Проверяю ошибки в этих скриптах:
**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
Проекты нельзя хранить в папках с русскими названиями.
изменил имя на беспробельное латинское - и то же самое
Гм, ну это вообще редкий баг.
Попробуй Control > Delete ASO Files And Test Movie.
ладно. С вашими примерами всё равно вылезают ошибки :)
но со своими я уже разобрался, вроде получается. Спасибо большое
Только что проверил, у меня все работает нормально.
да... реально баг... он решается закрытием и открытием флэша... или переставлением закладок пару раз...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.