Сценарий объекта (класса?) Actionscript - PullRequest
2 голосов
/ 12 ноября 2008

Пытаясь научиться создавать объекты в ActionScript, я не добился успеха. Одна вещь, которую я заметил, это то, что, кажется, существует миллиард различных способов сделать это. Даже если ни один из них не работал на меня. Это действительно смущает меня, и я не знаю, какой подход попытаться отладить.

Наиболее часто встречающийся подход:

function myClass() {
   this.val = 1;
}

var test = new myClass();
trace(test.val);

Но это просто дает мне ошибки компилятора, независимо от того, насколько просто я это делаю, и для меня нет смысла, что функция может быть объектом. Если функция является объектом, то где «это» указывает, когда она находится в функции в функции (которая интерпретируется как объект).

Другой способ, который, кажется, встречается несколько реже:

class myClass {
   function myClass() {
       this.val = 1;
   }
}

var test = .... 

Это также дает мне ошибки компилятора и кажется более формальным. Но я могу найти очень мало документации для сравнения. Большинство руководств либо очень просты, либо предполагают, что вы говорите о встроенных объектах.

Третий способ - создать

new Object();
в функции, добавить все, что вы хотели, и вернуть его. Кажется логичным Но я читал всевозможные вещи, в которых упоминаются прототипы, и кажется, что созданный таким образом объект плохо подходит для создания прототипа. Но на самом деле я просто очень смущен.

Я также сталкивался с тем, что синтаксис объектов в AS2 и AS3 отличается, но не более того.

Как я должен создавать объекты? Каковы лучшие практики, и ради любви к Богу кто-нибудь знает, где я могу найти углубленное руководство? (мой гугл-фу явно слаб)

1 Ответ

5 голосов
/ 12 ноября 2008

Синтаксис класса между AS2 и AS3 действительно отличается. Для AS3 синтаксис выглядит примерно так:

package somePackage {

    public class SomeClass {
        public function SomeClass() {

        }
    }
}

В качестве объяснения, пакет - это оболочка, которая может содержать несколько классов, поэтому вы должны объявить, какой пакет содержит каждое определение класса.

Класс требует функции конструктора. В большинстве языков имя функции конструктора совпадает с именем класса. Так обстоит дело в ActionScript.

Вызов экземпляра вашего класса будет выглядеть примерно так:

package somePackage {

    public class OtherClass {
        public function OtherClass() {
            var something = new SomeClass();
        }
    }
}

Передо мной стоит моя ссылка на AS3, поэтому я чувствую себя довольно уверенно с приведенным выше фрагментом кода, но, к сожалению, моя ссылка на AS2 работает, но код должен выглядеть примерно так:

class ThirdClass {
    public function ThirdClass() {

    }
}

А затем для создания экземпляра переменной должно выглядеть примерно так:

var third = new ThirdClass();

Обратите внимание, что в приведенных примерах не используется строгая типизация, которую я бы порекомендовал использовать по возможности в ваших усилиях по ActionScript.

Хотя я настоятельно рекомендую вам выбрать копию Essential ActionScript 2.0 и / или Essential ActionScript 3.0 , я нашел следующие ссылки для начинающих учебников:

Начало обучения Flash и ActionScript

Дополнительные учебники для начинающих

...