|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2009
Сообщений: 34
|
Не могу вызвать переменную из вспомогательного файла
Начал изучать AS3 по книге
ActionScript 3.0 для Flash Подробное руководство Колина Мука Запнулся в самом начале, вот цитата с кодом: " В результате использования приведенного кода переменная экземпляра petName будет автоматически присоединена к каждому новому экземпляру класса VirtualPet. Исходным значением переменной petName для всех экземпляров класса VirtualPet будет являться фраза Unnamed Pet. ---------------------------------------------------------------------------------- Локальной переменной присвоим имя pet, а для связывания объекта VirtualPet с этой переменной воспользуемся инициализатором. Привожу код: package zoo { public class VirtualZoo { public function VirtualZoo ( ) { var pet = new VirtualPet; } } } может быть использована для обращения к объекту и, следовательно, для управления им. " Прочитав это я так понял, что переменная pet теперь имеет значение и это значение Unnamed Pet. Я создал 2 файла mous01.as и zna.as в каталоге proba. В корневом каталоге создал файл mous01.fla и связал его с классом proba.mous01 Листинг файла mous01.as создаёт круг, а цвет заливки круга я хочу получить из внешнего файла zna.as того же пакета proba. код mous01.as: package proba { import flash.display.*; public class mous01 extends MovieClip { public function mous01() { var cvet = new zna; graphics.lineStyle(9, 500000); graphics.beginFill( cvet ); graphics.drawCircle( 100, 100, 70); } } } То есть по сути я полностью повторил код Мука, но круг у меня рисуется с чёрной заливкой, а компилятор о ошибках не сообщает. То есть значение переменной kolor из файла zna.as не передаётся в переменную cvet файла mous01.as. Помогите разобраться почему так происходит. |
|
|||||
вы создаете обьект класса zna, а колор это поле этого обьекта.
|
|
|||||
Регистрация: Dec 2007
Сообщений: 204
|
var petName = "Unnamed Pet"; var pet = new VirtualPet; var cvet = new zna; var kolor = 111111; и т.д.
__________________
http://www.infinity3d-engine.com Последний раз редактировалось MonkDead; 28.06.2009 в 18:53. |
|
|||||
Регистрация: May 2009
Сообщений: 34
|
MonkDead - спасибо за помощь, заработало.
Ключевым было По поводу написания имён классов с большой буквы это Вас обманули Работающий код теперь такой package proba { import flash.display.*; public class mous01 extends MovieClip { public function mous01() { var cvet = new zna; graphics.lineStyle(9, 500000); graphics.beginFill( cvet.kolor); graphics.drawCircle( 100, 100, 70); } } } Не сочтите за наглость, но пожалуйста поясняйте свои ответы примерами. |
|
|||||
ну каждый сам определяет глубину своего ответа. Я дал вам наводку. Вы же должны были лучше углубиться в ооп. тогда вам бы стало ясно и что такое класс и что такое обьект этого класса и что такое поля класса. А еще вы бы знали что в нашей с вами вселенной, насколько мне известно нет ооп языка где было бы принято называть классы с маленькой буквы.
|
|
|||||
Регистрация: Dec 2007
Сообщений: 204
|
p0okm, давайте представим что вы это объект во вселенной, у вас есть имя. Имя вы пишете свое с большой буквы, не так ли? Соответственно хотя бы из этой аналогии надо имя класса писать с большой буквы.
Вы в классе Zna задаете свойство kolor, создаете экземпляр класса что бы получить значение свойства вы должны вызвать его Еще один важный аспект не называйте свойства, методы, классы используя транслит. Вместо kolor надо писать color, иначе ваш код просто читать невозможно.
__________________
http://www.infinity3d-engine.com |
|
|||||
Регистрация: May 2009
Сообщений: 34
|
Ещё раз благодарю за помощь, но по поводу заглавной литеры в имени класса позволю себе с вами не согласиться. В документации нигде не сказано про условие именно так начинать написание имени класса, компилятор так же не протестует по этому поводу поэтому написание имени класса с прописной литеры не может быть причиной неработоспособного кода.
Локально - kolor я не мог написать с "с" так как есть служебное слово "color" поэтому и применил альтернативную литеру, которая не изменяла сути понимания переменной. Ещё раз искренне благодарю за помощь. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Цитата:
Ни один класс флешевого фреймворка не даёт повода именовать классы со строчной буквы, однако называть свои собственные классы как попало в последнее время стало модно |
|
|||||
если можно не значит хорошо.
Есть конвенции или как их там. Есть стиль. Есть правила. Но вы из тех кто считает что правила всегда нужно нарушать? Ах да кстати, компилятор не будет ругаться так же если вы по русски будете называть переменные. Это так круто, среди нас никто еще не решился на такую дерзость... Может вы будете нашим героем?)) А насчет служебного слова... ну нет в этом языке служебных слов color есть поля color. Служебные слова это for if return к примеру, а color нет. Ну опять таки возможно в книжке не сказано что color не является служебным словом, так что зачем рисковать )) Добавлено через 59 секунд опоздал...) |
Часовой пояс GMT +4, время: 13:56. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|