![]() |
Перехожу на классы. Помогите разобраться.
Здравствуйте товарищи! Давненько я сдесь не задавал вопросов, но вот теперь настал час, когда я немогу обойтись без вашей помощи. Решил перейти на классы, чтобы в слудующем несколько упростить усвоение AS3 но пока не оставаться без денег, и что-то делать. Так сказать решил пойти по двум тропам одновременно. Началось все более менее неплохо, написал свой первый в жизни класс, простенький, но всеравно было приятно, от того, что закончился первый эксперимент успешно. Это был обычный классик, который программно рисует квадраты :) Потом я написал второй классик, который программно рисует рамки. Далее я решил написать третий классик, но тут успех обошел меня стороной. Вот собственно решил попрасить вашей помощи. В свое время именно тут мне помогли осовить AS2 за, что я всем очень благодарен. Собственно перейду к вопросу.
Третий класс, который у меня не получился, это так сказать, мини-прелоадер. com/flashgangsta/Preloader.as Код AS1/AS2:
Код AS1/AS2:
Помогите пожалуйста, подскажите в чем я ошибся. Благодарю за внимание. |
А что не работает то?
|
Черт возьми )) действительно все работает :D
Както не привычно просто что пока ненажмешь ctrl+s компилится старый сейв класса. Ну да ладно, с этим проехали, я тупица ) Чтобы тема не пропадала даром, расскажите мне пожалуйста что есть private public static dynamic а также package Если не трудно конечно. Спасибо :) И еще! Чуть не забыл. Возможно ли мне непосредственно в самом классе, вставить onEnterFrame? Ну типа вот так: Код:
class com.flashgangsta.Preloader {Код AS1/AS2:
|
Я бы посоветовал использовать интервал - с onEnterFrame клипа, в который грузишь, могут происходить разные чудеса)))
И назови методы нормально, что еще за лоадинг))) viewLoading, displayLoading, controlLoading, convoyLoading, escortLoading))))) И не func, а completeHandler - у тебя же почти событие тут происходит))) Мирового массштаба)) Удачи тебе, отличное начинание)) |
1. private/public - ключевое слово метода, свойства или класса, определяют уровень доступа. public - доступен для любого вызывающего объекта. private только внутри класса или подкласса, то есть, если вы задали свойству private, то любой другой класс не наследуемый от данного, не получит доступа к свойству.
Коли вы собираетесь переходить на AS3, то скажу, что там подобных ключевых слов больше - internal/private/public/protected, но private здесь не дает доступа из подклассов, аналог для private из AS2 это protected. Про остальные прочитайте в хелпе, ссылка в моей подписи есть. 2. static - говорит о том, что свойство или метод принадлежит классу, а не экземплярам класса. Поэтому обращение идет через имя класса. Пример класс Math, у него все методы и свойства static. Методы и свойства класса не наследуются. 3. dynamic - ключевое слово класса, говорит о том, что свойства могут быть не описаны и добавляться в процессе выполнения. В противном случаи, они должны быть описаны с помощью var. 4. package - пакет. Служит для разделения классов на группу и помогает устранить конфликты между классами с одинаковыми названиями. Пример: вы создали флешку с классом Main, которая грузит в себя чужую флешку. Но так получилось, что в ней тоже есть класс с таким же именем. Возникает конфликт. Использую пакет, вы этого избегаете. А как избежать создания пакетов с одинаковым именем? Принято называть пакет по имени вашего домена. У меня пакеты начинаются с ru.inils, а потом указываю имя проекта или направления. Например ru.inils.utils, ru.inils.homepage.utils или ru.inils.ims.utils. Но самого имени пакете мало, должна быть соответствующая файловая структура. То есть, каждой слово пакета, это название каталога. В случае с com.flashgangsta.Preloader должен быть каталог com, в нем каталог flashgangsta, а в нем файл Preloader.as с классом. |
private:Видемый только в классе;
public: Метод доступен любому классу; (лучше, использовать get and set для переменых); static: Доступен непосредственно из класса, а не из экземпляра класса пример:Math.round(); package: Пакеты являются важной частью работы с классами, потомучто они позволяют предотвратить конфликты имен классов. Примерно как, в одну папку, не засунешь две разные фото с одним названием. dynamic:Определяет, что образцы класса могут обладать динамическими свойствами, добавленными во времени выполнения. Если Вы используете динамический атрибут на классе, Вы можете добавить свойства к образцам того класса во времени выполнения. Классы, которые не отмечены как динамические, считают запечатанными, что означает, что свойства не могут быть добавлены к образцам класса. А лучше, читай хелп; В АС3 есть хорошие ссылки на pdf. файлы. |
Всем огромное спасибо!
Вот еще один вопросик у меня. Значит так. Добавил я в свой класс переменную «loaded», и непонятно она как-то отображается совсем. Взгляните плиз: Код AS1/AS2:
Если же я обявлю переменную без static Код AS1/AS2:
:o Всем огромное спасибо за внимание. |
А куда ты static дел?))))
Добавлено через 5 минут Сам подумай, если это у тебя написано в теле обработчика события onEnterFrame клипа target, то чье свойство ты выводишь? Добавлено через 12 минут Вообще, плохая практика из своего класса нагружать внешние объекты новыми свойствами и тем более методами, а уж тем более - переписывать их родные (как onEnterFrame в данном случае). Это чревато такими багами, которые замучаешься потом искать, да и просто нарушает "этику" класса. Надо постараться сделать класс независимым везде где это возможно. В данном случае тебе нужен просто таймер для периодического опроса, и трогать для этого таргет-клип не надо. Надо завести интервал и опрашивать по нему. Никогда не лезь во внутреннее устройство чужих экземпляров без насущной необходимости. |
Статик я убрал чтобы не писать из фла весь путь к классу, а создать экземпляр класса.
Код:
import com.flashgangsta.*;Код AS1/AS2:
Wolsh По последнему добавлению, ьольшой сенкс. Нарушать «этику» не хочу, сейчас же перепишу :) Переписал: Код AS1/AS2:
|
К пятому варианту пора бы определиться, будет у тебя статик или будет экземпляр))) А то уже вообще трудно сообразить, что тут за арабская вязь))) Зачем тебе эти хитрые методы сетЛоадКомплит и гетЛоадКомплит? Да к тому же паблик - ты собираешься снаружи командовать, что клип загрузился?))))
Код:
class com.flashgangsta.Preloader {Код:
import com.flashgangsta.Preloader; |
| Часовой пояс GMT +4, время: 16:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.