Как использовать else if {var в AS3 без возврата ошибки 1083? - PullRequest
0 голосов
/ 03 октября 2009

У меня есть оператор if / else if / else if / else if / else в AS3.

Это календарь, который считывает даты из XML-файла. Операторы if / else if / else управляют внешним видом даты в зависимости от того, есть ли у нее событие, и является ли оно прошлым / настоящим или будущим. MouseEvent - это всплывающая подсказка, которая показывает информацию о событии.

Последний раздел

else {
 var thisday:String = "<b><font color=\"#666666\" size=\"9\"> <u><font size=\"12\"> -</font> " + yy + " <font size=\"12\">-</font> " + GlllStringUtil.checkDigits((mm + 1).toString()) + " <font size=\"12\">-</font> " + i.toString() + " <font size=\"12\">- </font></u></font></b> ";
 myCLabel = new ICLabel(); 
 myCLabel.date.htmlText = GlllStringUtil.checkDigits(i.toString());
 myCLabel.date.background = false;
 myCLabel.date.textColor = "0x666666";
 myCLabel.date.autoSize = TextFieldAutoSize.CENTER;
 myCLabel.date.selectable = false;
 myCLabel.date.mouseEnabled = true;
 myCLabel.y = 0;
 myCLabel.x = 25 * (i - 1);
 myCLabel.name = i.toString();
 myCLabel.data = thisday;
 myCLabel.addEventListener(MouseEvent.MOUSE_OVER, myCLabel_mouse_over);
 myCLabel.addEventListener(MouseEvent.MOUSE_OUT, myCLabel_mouse_out);
 calendarHolder.addChild(myCLabel);
}

Если я повторю это внутри утверждения, я получу 1084 для использования else if {var ...

Я могу использовать else, но тогда, если я начну следующий раздел с if / else и пока он делает то, что мне нужно - внешний вид переопределяется этим последним if / else.

Я пытаюсь это сделать, потому что для появления будущих дат существует только одна отметка, что означает, что если есть будущее событие - оно не подсвечивается.

Как мне повторить это внутри, используя else if {var, без возврата 1084?

(Любая помощь будет принята с благодарностью, так как я очень мало знаю AS3.)

-

Обновление:

Большое спасибо за ваш ответ.

Файл .as, и он довольно длинный, поэтому я загрузил его здесь как текстовый файл Есть также 2 маленьких изображения в формате gif, чтобы попытаться продемонстрировать то, что я пытаюсь достичь. (Вы заметите (на изображении), что всплывающая подсказка появляется над выделенной датой, но в противном случае будущие даты не подсвечиваются, поэтому вы не сможете определить, есть ли событие, если не навести указатель мыши на дату.)

Надеюсь, это нормально.

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

Ответы [ 2 ]

5 голосов
/ 03 октября 2009

1084 - ошибка, указывающая на неверный синтаксис. Вы пропустили закрытие скобки или что-то в этом роде. напишите полный код функции, если хотите получить более точный ответ:)

0 голосов
/ 06 октября 2009

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

Блоки следуют этой схеме:

if( /*<some condition>*/ ) {
    // create a specific type of Label
}
else if( /*<another condition>*/ ) {
    // create a different type of Label
}
else if( /*<yet another condition>*/ ) {
    // create yet another type of Label
}
else {
    // create a default type of Label
}

Так работают if операторы. Может быть только один else, и он должен прийти прямо в конце. Он обрабатывает то, что происходит, когда все условия if и else if не совпадают. Это что-то вроде «последней инстанции».

Вы говорите в комментариях к связанному с вами коду: «Этот блок контролирует, как выглядят даты, если НЕТ событий». и вы хотите добавить блок, который обрабатывает, когда есть события. Это означает, что вы хотите добавить новый else if. Для этого необходимо для предоставления условия.

if( /*<some condition>*/ ) {
    // create a specific type of Label
}
else if( /*<another condition>*/ ) {
    // create a different type of Label
}
else if( /*<yet another condition>*/ ) {
    // create yet another type of Label
}
// Here you need a new condition
else if( /*<some condition that evaluates to true when there are events>*/ ) {
    // create a label styled to show off events
}
else {
    // create a default type of Label
}

Код немного сложнее, чем я готов инвестировать, чтобы помочь вам определить, как написать условие, которое оценивается как истинное для конкретной даты, когда есть события для этой даты. Но заявление, соответствующее форме, которую я показал, должно сработать и обойти вашу ошибку 1084.

...