Суббота, 23 Ноября 2024, 15:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите пожалуйста разобратся в ActionScript 3.0
HSDimaДата: Вторник, 30 Октября 2012, 18:08 | Сообщение # 1
был не раз
Сейчас нет на сайте
Помогите пожалуйста! Я только начал изучать ActionScript 3.0 и немного запутался. Читаю книгу Колина Мука.
Не могу разобраться в одном коде:
1. Файл основного класса VirtualZoo
Code
//Содержимое файла VirtualZoo.as
//Класс VirtualZoo
package zoo
{
  public class VirtualZoo {
   public function VirtualZoo () {
    var pet = new VirtualPet("Stan");
   }
  }
}

2. Файл класса VirtualPet
Code
//Содержимое файла VirtualPet.as
//Класс VirtualPet
package zoo  
{
  internal class VirtualPet {
   internal var petName;
    
   public function VirtualPet (name) {
    this.petName = name;
   }
  }
}

Не понятно только одно. Как вот эта переменная в первом файле класса VirtalZoo:
Code
var pet = new VirtualPet("Stan");

Может задавать значение конструктору второго файла класса VirtalPet:
Code
public function VirtualPet (name) {
    this.petName = name;
   }
, а тот переменной класса "VirtualPet"
Code
internal var petName;

Правда оба класса находятся в одном пакете
Code
packet zoo {
}

Заранее спасибо за ответ! Помогите новичку! И будет вам respect



triptixДата: Вторник, 30 Октября 2012, 18:41 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
первый кусок кода создает pet при помощи конструктора
Code
var pet = new VirtualPet("Stan");

а во втором срабатывает "точка входа" - функция, совпадающая с названием класса - VirtualPet (функция срабатывает при первом создании класса, тк ее имя== имя класса), и в ней прописано, что получив имя, она должна его присвоить.

Вообще мук очень заморочен, сразу в дебри кидается.

Рекомендую почитать статью про то как комрад делал первую игру на as3, все очень подробно расписано, и сразу практическое применение, а не теория http://etcs.ru/files/AsteroidStormSourceCode.rar
noTformaTДата: Вторник, 30 Октября 2012, 18:58 | Сообщение # 3
Ukrainian independent game developer
Сейчас нет на сайте
Директива internal показывает, что класс, переменная, константа или функция доступны для любой вызывающей программы в пределах того же пакета. Классы, свойства и методы принадлежат пространству имен internal по умолчанию.

мука не рекомендую если надо начинать с нуля... лучше офф документация...
http://help.adobe.com/ru_RU/as3/learn/index.html


@noTformaT
HSDimaДата: Вторник, 30 Октября 2012, 19:36 | Сообщение # 4
был не раз
Сейчас нет на сайте
triptix,
noTformaT,
Спасибо большое за ответы! Ценю общество форума, много отзывчивых и добрых людей. + Вам.



Desert_HunterДата: Вторник, 30 Октября 2012, 19:45 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Классический пример инкапсуляции... С AS не знаком, но скажу, что могут быть ситуации, когда переменная petName может быть недоступна из другого класса, так называемая приватная переменная, а что бы получить данные извне и присвоить их данной переменной и пишется this.petName = name, где переменная name получает значение из другого класса и присваевает его данной переменной. wink
HSDimaДата: Вторник, 30 Октября 2012, 22:04 | Сообщение # 6
был не раз
Сейчас нет на сайте
triptix, noTformaT, Desert_Hunter, Получается что Создания класса VirtualPet
Quote (HSDima)
var pet = new VirtualPet("Stan");

Автоматически выполняет инструкции приведённые в конструкторе?
Quote (HSDima)
public function VirtualPet (name) {
this.petName = name;
}

То есть значение ("Stan") Автоматически передается конструктору потому что у них одинаковое название VirtualPet??



Desert_HunterДата: Вторник, 30 Октября 2012, 22:15 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Quote (HSDima)
Получается что Создания класса VirtualPet

Точнее сказать создание экземпляра класса
Quote (HSDima)
Автоматически выполняет инструкции приведённые в конструкторе?

Эээ... ну на то он и конструктор, не...
Quote (HSDima)
То есть значение ("Stan") Автоматически передается конструктору

Ну не напишешь не передастся, вылетит с ошибкой, потому как у конструктора есть передаваемые параметры. В скобках написано name, помнишь?)))
Quote (HSDima)
потому что у них одинаковое название VirtualPet??

У имени класса и конструктора по определению одинаковое имя должно быть...
HSDimaДата: Вторник, 30 Октября 2012, 23:38 | Сообщение # 8
был не раз
Сейчас нет на сайте
Desert_Hunter, Блин спасибо большое! Так хорошо объяснил респектище!!! respect :respect: respect
Я просто только начал изучать AS. Сейчас Adobe-вскую справку прочитаю и дальше буду Мука изучать! Что-бы я без вас и этого форума делал. =) Посылаю лучи плюса XD



  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг