Форум 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)
-   -   Наследование свойства класса MovieClip (http://www.flasher.ru/forum/showthread.php?t=95069)

Ariel 27.04.2007 00:44

Наследование свойства класса MovieClip
 
В конструкторе обычного класса, который ничего не расширяет, пытаюсь создавать мувик при помощи createEmptyMovieClip. Компиллер ругается, что There is no method with the name 'createEmptyMovieClip'. Импорт класса MovieClip не помогает. В чем проблема?
Спасибо.

iNils 27.04.2007 01:02

Если класс не расширяет MovieClip, то создать в нем мувиклип нельзя. Поэтому надо передать в него ссылку на какой-то мувиклип и создать в нем.

etc 27.04.2007 01:14

Цитата:

Сообщение от Ariel
В конструкторе обычного класса, который ничего не расширяет, пытаюсь создавать мувик при помощи createEmptyMovieClip. Компиллер ругается, что There is no method with the name 'createEmptyMovieClip'. Импорт класса MovieClip не помогает. В чем проблема?
Спасибо.

А откуда метод возьмется, по вашему?

Ariel 27.04.2007 01:33

Цитата:

А откуда метод возьмется, по вашему?
Ну, по-моему он должон браться из импортируемого класса MovieClip. Про то и пишу..
Цитата:

Поэтому надо передать в него ссылку на какой-то мувиклип и создать в нем.
Ага, значить, если на руте создаем, то в конструктор рутовую ссылку передаем, так что-ли? Что-то типа такого на основной временной шкале::
Код:

new God(this);

etc 27.04.2007 01:42

Можно и так. Но метода createEmptyMovieClip у Object нет.

Ariel 27.04.2007 01:51

Это понятно, что нет... А как еще можно? Типа, расширить God от MovieClip, получив тем самым ссылку на createEmptyMovieClip? Но этому методу надо скармливать адрес временной шкалы для создания. И где его добывать тогда?

lowka 27.04.2007 02:16

Код:

class AnyClass {
        private var _mc:MovieClip;

        /**
        * Конструктор.
        */       
        public function AnyClass(target:MovieClip, depth:Number){
                if(!target){
                        return;
                }
                this._mc = target.createEmptyMovieClip('_anyClassMcAt'+depth, depth);
        }
}


screamge 27.04.2007 02:20

lowka, можно без this в this._mc.

без передачи адресса временной шкалы не получится.

Код:

class exper.Exp1 extends MovieClip {
        public function Exp1 (){
                trace (this)
        }
}

если создавать на главной this будет равен [object Object]

Ariel 27.04.2007 02:21

Я и говорю, что ссылку передаем... Вернее, Inils. :)

А вообще, никак в голове не укладывается: как же так получается, что когда навешиваем внешний класс на мувик в библиотеке при помощи Linkage, и трейсим свойство this, то наблюдаем указатель на мувик, а не на объект класса! Ведь два разных объекта имеем, по идее. Один - это сам рисованный библиотечный мувик. Другой - наш объект на базе внешнего класса. Как же так получилось, что у них одинаковый this в рантайме? Путаница какая-то... Эксперты, поясните! А то Гурский как-то ясности не вносит.

lowka 27.04.2007 02:46

Цитата:

Сообщение от screamge
lowka, можно без this в this._mc.

Да, можно, но я всегда указываю к свойству какого объекта обращаюсь (во избежание бессмысленных префиксов).

Цитата:

Сообщение от Ariel
...Ведь два разных объекта имеем, по идее. Один - это сам рисованный библиотечный мувик. Другой - наш объект на базе внешнего класса. Как же так получилось, что у них одинаковый this в рантайме? ...

объект один. и этот объект -- мувик со всеми указанными методами и свойствами.


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

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