На что указывает 1071: синтаксическая ошибка и как мне разрешить этот код?

#flash #actionscript-3

#flash #actionscript-3

Вопрос:

Я просматриваю учебные пособия по динамическим классам. Концепция действительно захватывающая и интересная для меня.

Однако этот код компилируется неправильно

 dynamic class Person {
var name:String;
}

Person p= new Person();
p.name=”Joe”;
p.age=25;
p.printMe = function () {
trace (p.name, p.age);
}
p.printMe(); // Joe 25
  

Я получаю синтаксическую ошибку 1071.

Что дает?

Комментарии:

1. Person p= new Person(); находится var p:Person = new Person(); в as3

2. Синтаксическая ошибка просто означает, что в вашем коде есть какая-то ошибка ввода (синтаксис).

3. @www0z0k не работает, я уже пробовал это.

4. @LedZeppelin Ну, BoltClock отвечал на первую часть вашего вопроса («Что указывает 1071: синтаксическая ошибка») напрямую. Не будь таким придирчивым.

Ответ №1:

Ошибка в синтаксисе; Person p = new Person(); недопустимо КАК3. Это должно быть var p:Person = new Person();"

РЕДАКТИРОВАТЬ 1: Кроме того, конечно, если вы разместите свой код как есть на временной шкале, он не будет работать. Класс должен быть в файле .as, а другой код должен быть на временной шкале (или в функции класса).

РЕДАКТИРОВАТЬ 2: этот код работает:

 //Timeline:
var p:Person = new Person();
p.name="Joe";
p.age=25;
p.printMe = function () {
    trace (p.name, p.age);
}
p.printMe(); // Joe 25`
  

Где Person.as выглядит как:

 package {
    public dynamic class Person {
        var name:String;
    }
}
  

Комментарии:

1. Спасибо, Джонатан, я сейчас над этим работаю (извините, я медленный новичок.) Кстати, почему у вас не может быть классов на временной шкале?

2. Вероятно, это связано с тем, что временная шкала является частью автоматически сгенерированного класса, и вы не можете иметь классы в классах. Просто так оно и есть 🙂

3. 1 Также обратите внимание, что двойные кавычки, которые были скопированы, являются неправильными двойными кавычками. "Joe" вместо ”Joe” .

4. Да, это еще одно ограничение на то, как компилятор находит соответствующие файлы.

5. Ну, вы можете, но это сложно и странно. Для каждого файла .as может быть только один общедоступный класс (используемый извне файла).

Ответ №2:

Я не могу проверить это прямо сейчас, но похоже, что в вашем фрагменте кода есть две ошибки. Во-первых, объявление переменной, а во-вторых, строковые кавычки (вы использовали вместо " ). Следующий код должен работать:

 var p:Person = new Person();
p.name = "Joe";
p.age = 25;
p.printMe = function() {
    trace (p.name, p.age);
}
p.printMe(); // Joe 25