Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   ОПП доступ к... (http://www.flasher.ru/forum/showthread.php?t=88303)

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

Цитата:

Сообщение от Webas
пытаюсь сделать так но флэш ругается...

Неудивительно. Более безграмотного кода я еще не встречал. Жуткая мешанина ссылок на рут и подобия на AS2 классы.
Цитата:

Сообщение от Webas
Как это сделать грамотно? как вообще обращаться к клипам внутри 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, как раз наоборот. И это далеко не лишние слова — это страховка от ошибок. Внутренние свойства класса не должны торчать наружу.


Часовой пояс GMT +4, время: 23:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.