Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Профи, помогите разобраться в ООП в FMX (http://www.flasher.ru/forum/showthread.php?t=36749)

Alexandre 05.09.2002 15:57

Профи, помогите разобраться в ООП в FMX
 
Руководствуясь хелпом в FMX относительно ООП, я попытался создать свой экземпляр класса, а именно:
- создал символ MovieClip с именем MenuItem, а в имени LinKage написал theID. Далее в символе поставил динамическое текстовое поле с именем переменной 'txt', а в первом кадре TimeLine'а определил код:

function MenuItem() {
this.init();
}
MenuItem.prototype = new MovieClip();

MenuItem.prototype.init = function() {
this.txt = "МЕНЮ";
this.active = true;
trace("Init object");
}

MenuItem.prototype.onLoad = function() {
trace("Clip loaded");
}

MenuItem.prototype.setString = function(newLabel) {
this.txt = newLabel;
}
MenuItem.prototype.setVal = function(newValue) {
this.active = newValue;
}
MeniItem.prototype.getVal = function () {
return this.active;
}
MeniItem.prototype.getString = function () {
return this.txt;
}


- далее, возвратясь в основной ролик, в одном из кадров TimeLine'а определил код:

Object.registerClass("theID", MenuItem);
_root.attachMovie("theID", "Menu",2);

empti.Menu.setString("ТЕКСТ");


К всеобщему удивлению ..... не ра-бо-та-ет!!!

Так в чем же делло?

Тяжко без ООП!

lexass 05.09.2002 16:01

вот тут желающих помоч много, целый день пытаю
 
http://flasher.ru/forum/showthread.php?threadid=36697

infinity 05.09.2002 16:26

шо ж тут сказать? ООП в экшн скрипт - полный сакс и аут. :p как и сам экшн скрипт вообще ;)

RDA 05.09.2002 16:55

Ясен пень ест-но не работает! :)
во первых при регистрации класса функции MenuItem не существует.
во вторых с таким написанием MenuItem появится на следующий кадр после аттача.

Код:

#initclip

function MenuItem() {
this.init();
}
....

Object.registerClass("theID", MenuItem);
#endinitclip

Вот так будет работать! :D

Alexandre 05.09.2002 17:19

А точнее?

function MenuItem()...

определяется в TimeLine'е символа, а где же регистрируется класс.

Что в основном ролике? Подробный расклад...

john 05.09.2002 19:41

Странно, все у меня работает,
а ты символ библиотеки делал с линкейджем "theID"?

и по поводу описания сабклассов мувиков,

вообще хороший тон, делать это в самом элементе библиотеки (мувике) между

#initclip

....

#endinitclip

при этом код выполнятется до выполнения кода в первом кадре глобальной таймлайн и до инициализации мувиков в сцене,

в твоем случае это не критично, но тон все равно хороший,

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

Alexandre 06.09.2002 11:55

Представленный в самом начале код, действительно записан по всем (на мой взгляд) правилам.

В свойствах мувика определено имя Linkage - 'theID' и подкласс
определен в первом кадре самого мувика.

Регистрация класса происходит в TimeLine основного клипа далеко не в первых кадрах. Далее как видно из программы идет присоединение символа к основному клипу.

Тут МОМЕНТ: какое имя указывать в операторе attachMovie, имя зарегистрированного класса или 'theID'?
И еще. Я ожидаю увидеть на экране то слово, которое забиваю в методе setString.

Странное дело регистрация класса проходит успешно, а работать с экземпляром не удается.

Если возможно, раскиньте мне программку своими руками. Очень жду.

john 06.09.2002 16:47

Вложений: 1
даю исходник с твоим кодом,

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


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

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