Расчеты Adobe Livecycle и операторы if

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

Моя основная предпосылка: мне нужно выполнить расчет: ввести информацию в ячейку и получить результат (целла/2)-5, округленный в меньшую сторону, сохраняя отрицательное целое число в другой ячейке. (да, пытаюсь сделать свой собственный лист персонажа 3,5 d20 для показателей способностей).

В Excel мне удалось ввести немного более сложную формулу усечения =IF((Cella-10)/2‹0,TRUNC((Cella)/2-0.5),TRUNC((Cella-10)/2)), но понятия не имею, что делать в livecycle.

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

переменная х = ячейка 1/2-5; если (x ‹0) {return Math.ceil(x)}; иначе {возврат Math.floor(x)}

//ячейка1 выбирает из листа в livecycle, используя Ctrl+щелчок, попробовал вычислить и ввести форматы в строке скрипта. // Нужна ли мне var x для моей формулы, не уверен, некоторые учебники сказали да, другие нет для живого цикла. // не уверен, куда поставить { }, если вообще. // Math.floor и Math.ceil не выделяются синим цветом, как другие функции, на панели скриптов livecycle, которую я оставляю в режиме java для всех ячеек.


person user3331124    schedule 20.02.2014    source источник
comment
Попробуйте это: // fieldName::calculate var v = this.rawValue/2-5; return v<0 ? Math.ceil(v) : Math.floor(v);   -  person o-o    schedule 15.04.2014


Ответы (1)


Предыдущий ответ дал правильную математику, но он не будет работать в событии LiveCycle (оператор возврата недействителен в событии).

Предположим, у вас есть два поля: ячейка А (где вы вводите числа), ячейка В (где должен отображаться округленный результат). При необходимости замените фактическими именами в своем листе.

В событии вычисления для ячейкиB (поле, содержащее РЕЗУЛЬТАТ) введите этот код:

var v = null;
if (cellA.rawValue != null && cellA.rawValue != "")
{   
    v = cellA.rawValue / 2 - 5; 
    v = v < 0 ? Math.ceil(v) : Math.floor(v);
}
this.rawValue = v;

Есть оператор if, поэтому он не будет вычисляться при первом открытии формы.

Примечание: редактор javascript в livecycle в значительной степени отстой, поэтому не ожидайте большой помощи с синтаксисом/форматированием. Я бы порекомендовал вам скачать Notepad ++ и вставить туда код Java, это более полезно для выделения некоторого синтаксиса и проверки открытых/закрытых скобок.

person Stephanie    schedule 29.12.2014