PDA

Просмотр полной версии : ОПП доступ к...


Webas
21.11.2006, 05:08
Разбираюсь с ОПП AS 2.0 и наткнулся на следущую проблему:
Что делаю...
На сцене есть муви клип А(clipA), в котором есть клипы В(clipB) и С(clipC):
_root.createEmptyMovieClip("clipA", _root.getNextHighestDepth());
_root.clipA.createEmptyMovieClip("clipB", _root.clipA.getNextHighestDepth());
_root.clipA.createEmptyMovieClip("clipC", _root.clipA.getNextHighestDepth());
Теперь хочу прикрепить класс myClass к А(clipA):
_root.clipA = new myClass();
В классе хочу получить доступ к B(clipB) и C(clipC) чтоб, к примеру, повесить на них onRelease:
class myClass {
function myClass() {
this.clipB.onRelease = function():Void {
trace("B Released");
};
this.clipC.onRelease = function():Void {
trace("C Released");
};
}
}

пытаюсь сделать так но флэш ругается...
Как это сделать грамотно? как вообще обращаться к клипам внутри A(clipA) из класса?

Бармалей
21.11.2006, 11:42
пытаюсь сделать так но флэш ругается...
Неудивительно. Более безграмотного кода я еще не встречал. Жуткая мешанина ссылок на рут и подобия на AS2 классы.
Как это сделать грамотно? как вообще обращаться к клипам внутри A(clipA) из класса?
Прочитать "Основы ActionScript 2.0" Колина Мука.

etc
21.11.2006, 14:01
Бармалей, это AS1, который запихнули в класс :)

Webas, если уж ООП, то ссылки на _root вообще не должно быть (в идеале, конечно). Мувиклипы через конструктор не создаются.

Что делать? Купить пару толстых книжек по AS2.

Webas
21.11.2006, 15:04
Ребят, я в курсе что у мя тут через зопу написано, именно поэтому я и спаршиваю... и пишу "Как это сделать грамотно?" чтоб понять что к чему... А вам нибось лиш бы поупустить кого чтоль??!?!
Если можете то напишите как это все реализовать правильно в стиле AS2 ООП...

etc
21.11.2006, 15:32
import mx.utils.Delegate;
import AClass;
import BClass;

class MyClass extends MovieClip {
private var clipA:AClass;
private var clipB:BClass;
private function MyClass() {
super();
this.clipA = AClass(this.attachMovie('clipA','clipA',0));
this.clipB = BClass(this.attachMovie('clipB','clipB',1));
this.clipA.onRelease = Delegate.create(this,this.releaseHandlerA);
this.clipB.onRelease = Delegate.create(this,this.releaseHandlerB);
}
private function releaseHandlerA():Void {
trace('ClipA released');
}
private function releaseHandlerB():Void {
trace('ClipB released');
}
}
Естесственно, не забыть прописать linkage и класс MyClass для мувика в либе.
Дальше разбирайся сам.

ASp
21.11.2006, 23:37
__etc, а зачем super()? Сам же писал, что MC не создаются через конструктор. Вообщем, Webas, читай книги по ООП, хотя бы того же К. Мука.

etc
21.11.2006, 23:52
ASp, прежде чем советовать, потрудитесь сами ее прочитать, а не нести чушь. Слышал звон, а не знаешь, где он. (русская народная пословица)

screamge
22.11.2006, 02:21
_root.createEmptyMovieClip ("a", 1)
_root.a.createEmptyMovieClip ("b" , 1)
var mc:MovieClip = _root.a.b;
mc._alpha = 40

trace (mc._alpha)

при трасивоки показывает "39.84375" )), эт значит что по этому адрессу он находит нужный МС.

Webas
22.11.2006, 04:15
Прошарил седня все магазы, ничегошеньки(( Нет, этой книги.
По инету заказывать дык ее на складах нет, тираж то всего 2000 экз., а сколько флэшеров развелось)) Может знает где мона найти ... или пришлет по почте, ОБЯЗАЮСЬ вернуть после усердного изучения!

iNils
22.11.2006, 06:50
http://www.books.ru/shop/books/188476
http://www.books.ru/shop/books/390545

Бармалей
22.11.2006, 10:55
Просто удивляют подобные вопросы. Мук вон книгу на 500 страниц написал. Ан, нет, объясните-ка мне в двух словах на пальцах.

И сообщение от пользователя ASp Вообщем читай книги по ООП, хотя бы того же К. Мука тоже кажется странным, поскольку ничего лучшего чем "Essential ActionScript 2" по ООП в AS2 не существует в природе (господа, прошу вас не вступать в полемику по поводу того, что хэлп круче =).

ASp
22.11.2006, 14:04
__etc, приношу извинения. Забыл вставить ник в обращении. Уже исправил.
Бармалей, для начала я бы все же почитал книги про общие принципы ООП, не относящиеся к определенному языку. "Essential ActionScript 2" К. Мука действительно хорошая книга, я с этим и не спорю.

etc
22.11.2006, 14:14
ASp, мувиклипы не создаются через конструктор оператором new, поэтому он private, как можно было заметить в моем примере. Но это вовсе не значит, что конструктор не вызывается при аттаче мувика с присвоенным классом. Да, super можно опустить, но это логически неверно.

ASp
22.11.2006, 14:32
__etc спорить не буду, но я все-таки стараюсь не перегружать код избыточными словами, тем более, если они ухудшают читабельность кода.

etc
22.11.2006, 14:33
ASp, как раз наоборот. И это далеко не лишние слова — это страховка от ошибок. Внутренние свойства класса не должны торчать наружу.