#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();
в as32. Синтаксическая ошибка просто означает, что в вашем коде есть какая-то ошибка ввода (синтаксис).
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