![]() |
Профи, помогите разобраться в ООП в 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("ТЕКСТ"); К всеобщему удивлению ..... не ра-бо-та-ет!!! Так в чем же делло? Тяжко без ООП! |
вот тут желающих помоч много, целый день пытаю
|
шо ж тут сказать? ООП в экшн скрипт - полный сакс и аут. :p как и сам экшн скрипт вообще ;)
|
Ясен пень ест-но не работает! :)
во первых при регистрации класса функции MenuItem не существует. во вторых с таким написанием MenuItem появится на следующий кадр после аттача. Код:
#initclip |
А точнее?
function MenuItem()... определяется в TimeLine'е символа, а где же регистрируется класс. Что в основном ролике? Подробный расклад... |
Странно, все у меня работает,
а ты символ библиотеки делал с линкейджем "theID"? и по поводу описания сабклассов мувиков, вообще хороший тон, делать это в самом элементе библиотеки (мувике) между #initclip .... #endinitclip при этом код выполнятется до выполнения кода в первом кадре глобальной таймлайн и до инициализации мувиков в сцене, в твоем случае это не критично, но тон все равно хороший, главное чтобы конструктор был создан и класс зарегистрирован до инициализации мувиклипа. |
Представленный в самом начале код, действительно записан по всем (на мой взгляд) правилам.
В свойствах мувика определено имя Linkage - 'theID' и подкласс определен в первом кадре самого мувика. Регистрация класса происходит в TimeLine основного клипа далеко не в первых кадрах. Далее как видно из программы идет присоединение символа к основному клипу. Тут МОМЕНТ: какое имя указывать в операторе attachMovie, имя зарегистрированного класса или 'theID'? И еще. Я ожидаю увидеть на экране то слово, которое забиваю в методе setString. Странное дело регистрация класса проходит успешно, а работать с экземпляром не удается. Если возможно, раскиньте мне программку своими руками. Очень жду. |
Вложений: 1
даю исходник с твоим кодом,
по ходу тестирования, обнаружил проблему с методом getString видимо был какойто не тот символ, вероятно русская буква, вместо внешне такойже не русской ... переписал, проблема исчезла. |
| Часовой пояс GMT +4, время: 03:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.