Просмотр полной версии : ОПП доступ к...
Разбираюсь с ОПП 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" Колина Мука.
Бармалей, это AS1, который запихнули в класс :)
Webas, если уж ООП, то ссылки на _root вообще не должно быть (в идеале, конечно). Мувиклипы через конструктор не создаются.
Что делать? Купить пару толстых книжек по AS2.
Ребят, я в курсе что у мя тут через зопу написано, именно поэтому я и спаршиваю... и пишу "Как это сделать грамотно?" чтоб понять что к чему... А вам нибось лиш бы поупустить кого чтоль??!?!
Если можете то напишите как это все реализовать правильно в стиле AS2 ООП...
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 для мувика в либе.
Дальше разбирайся сам.
__etc, а зачем super()? Сам же писал, что MC не создаются через конструктор. Вообщем, Webas, читай книги по ООП, хотя бы того же К. Мука.
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" )), эт значит что по этому адрессу он находит нужный МС.
Прошарил седня все магазы, ничегошеньки(( Нет, этой книги.
По инету заказывать дык ее на складах нет, тираж то всего 2000 экз., а сколько флэшеров развелось)) Может знает где мона найти ... или пришлет по почте, ОБЯЗАЮСЬ вернуть после усердного изучения!
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 не существует в природе (господа, прошу вас не вступать в полемику по поводу того, что хэлп круче =).
__etc, приношу извинения. Забыл вставить ник в обращении. Уже исправил.
Бармалей, для начала я бы все же почитал книги про общие принципы ООП, не относящиеся к определенному языку. "Essential ActionScript 2" К. Мука действительно хорошая книга, я с этим и не спорю.
ASp, мувиклипы не создаются через конструктор оператором new, поэтому он private, как можно было заметить в моем примере. Но это вовсе не значит, что конструктор не вызывается при аттаче мувика с присвоенным классом. Да, super можно опустить, но это логически неверно.
__etc спорить не буду, но я все-таки стараюсь не перегружать код избыточными словами, тем более, если они ухудшают читабельность кода.
ASp, как раз наоборот. И это далеко не лишние слова — это страховка от ошибок. Внутренние свойства класса не должны торчать наружу.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.