AeroQSP: баги
Сюда записываем баги. Вопросы здесь задавать не нужно, для них есть отдельная тема. Для предложений тоже отдельная.
Экран не прокручивается колесом мыши, если курсор находится над картинкой в тексте.
Не совсем баг, но проблема.
В Windows без предустановленного Flash-плагина для IE не работает AeroShell.
Любопытный баг. Плеер Аэры не выводит конструкцию с ссылкой в виде картинки:
'<a href="EXEC: theme = 2 & gt $curloc"><center><img src="content/right_arrow.png"></center></a>
когда тег CENTER находится внутри блока <a></a>. Если тег вынести за его пределы, все отображается правильно:
'<center><a href="EXEC: theme = 2 & gt $curloc"><img src="content/right_arrow.png"></a></center>
Видимо, проблема связана с особенностями HTML. На урк-канале мне поведали, что неправильно заключать тег CENTER внутри <a></a>, т.к. A - инлайновый элемент, который работает только в пределах картинки. Центрировать ее внутри бессмысленно, надо делать это снаружи.
Я уже не раз говорил об этом баге, но внятного ответа до сих пор не получил.
На этот раз решил показать на простом примере. Скачайте программку и запустите её в аэре.
http://www.sendspace.com/file/a3mxdk
Как видите, там есть двенадцать картинок 100х100 расположенных так чтобы не перекрывать друг-друга при помощи дивов с абсолютным позиционированием. Размеры дивов тоже 100х100, они четко совпадают с картинками. Я специально подкрасил бекграунды дивов, чтобы видет если они выступят за пределы картинок. Не выступают.
Каждая картинка это целиком ссылка. Если разместить одну такую, то можно кликнуть по любой её точке и пройти по ссылке. Но когда их становится несколько возникает странны нарастающий эффек, в результате которого часть областей экрана становится недоступной для клика. В примере по некоторым картинкам кликнуть нельзя вообще, а большинство перекрыты частично. Поводите курсором над ними и увидите по его превращению где какие места.
Тут кликабельные места расположились в основном с краю, но никакой системы я выделить не могу. Единственное что я знаю — если в коде расположить строки дивов в другом порядке, то перекрытия будут другие. Теоретически можно минимизировать выпадающие зоны правильным порядком дивов в коде, но если геометрия сложная и дивов много, идеального порядка найти не выходит. Что-от да выпадает. А это создает огромные трудности при создании графического интерфейса.
Что делать будем?
ЗЫ: Тот же баг проявляется не только при использовании картинок. Чисто текстовые ссылки выпадают по аналогичному принципу.
Судя по всему это особенности отрисовки новых строк в аеро
Поскольку каждый див в примере выводится новой строкой, то они в итоге и перекрывают часть дивов
Как только я в строки с выводом дивов добавил *p, все картинки стали полностью кликабельны
Вообще при работе с HTML лучше всего любые строки с тегами выводить через *p (классики это тоже касается, поскольку в ней переносы строк обычно накапливаются в конце текста - это особенно заметно при выводе таблиц)
werewolf,
наверное это из-за того, что перевод строки формирует тег
.
То есть, написав так
'<div>1</div>'
'<div>2</div>'
Мы получаем
<div>1</div>
<br>
<div>2</div>
<br>
В таком случае спасет действительно только оператор *P.
Круто! Работает.
Вервольф, спасибо огромное.
Ты мой герой ) Но я об этом уже говорил по-моему…
Люди! Я не знаю, может это не баг виноват, а мой мозг, но почему-то у меня глючит Counter в аере. Есть локация с таким кодом:
слагаемое1 = 1
слагаемое2 = 2
слагаемое3 = 3
В counter прописал (как правило, чтобы всегда так было!):
среднее_арифметическое = (слагаемое1 + слагаемое2 + слагаемое3) / 3
Вставил переменную “среднее_арифметическое” куда-нибудь, а она равна нулю!!! :( :(
Вставил вот это:
(слагаемое1 + слагаемое2 + слагаемое3) / 3
И вывелось 2! А мне нужно чтоб именно переменная “среднее_арифметическое” выводилась! Странно, но в классическом плеере все нормально выводится
Надеюсь меня поняли
Вставил переменную "среднее_арифметическое" куда-нибудь
Где соотв. код?
AKA,
скорее всего ты опечатался в названии переменной, когда “вставлял куда-нибудь”. Либо не запустил COUNTER(не присвоил системную переменную $COUNTER). Либо вывод на экран у тебя раньше, чем запуск COUNTER.
Я же предупреждал насчет COUNTER, не нужно в него пихать код просто так. Он предназначен только для крайне редких, специфических случаев. Ты сам себе граблю подложил.
Nex:
Либо не запустил COUNTER(не присвоил системную переменную $COUNTER)
Ну другие коды в Counter работают! Значит счетчик задан правильно!
Nex:
Либо вывод на экран у тебя раньше, чем запуск COUNTER.
Счетчик запускается в самой первой локе, а вывод в 4-ой! (”слагаемые” задаются во 2-ой локе)
Nex:
Cкорее всего ты опечатался в названии переменной, когда “вставлял куда-нибудь”
Я не опечатался (все скопировал). Если код убрать из счетчика и поставить просто кодом в любое другое место, то число выведется! (Это все счетчик виноват! :) )
Nex:
Где соотв. код?
Я просто вставил переменнуюе в “выполнить при посещении”
Nex:
Я же предупреждал насчет COUNTER
Я не знаю когда, но я не видел как ты предупреждал
Nex:
Он предназначен только для крайне редких, специфических случаев. Ты сам себе граблю подложил.
Если счетчиком не получится, то как по другому сделать так, чтобы (не важно от обстоятельств) что-то ВСЕГДА было равно чему-то?
И все-равно я считаю что там баг! :P
Можно aqsp файл с демонстрацией ошибки?
для таких вычислений лучше вместо COUNTER воспользоваться отдельной локацией, вызываемой через FUNC
#test
слагаемое1 = 1
слагаемое2 = 2
слагаемое3 = 3
среднее_арифметическое = func('среднее_арифметическое')
-
#среднее_арифметическое
result = (слагаемое1 + слагаемое2 + слагаемое3) / 3
-
в принципе эту функцию можно даже улучшить, убрав зашитые переменные и использовав массивы
#test
слагаемое[] = 1
слагаемое[] = 2
слагаемое[] = 3
среднее_арифметическое = func('среднее_арифметическое', 'слагаемое')
*p среднее_арифметическое
-
#среднее_арифметическое
!'
$args[0] - имя массива с данными
!'
copyarr '_average', $args[0]
_i = 0
_length = arrsize('_average')
_sum = 0
:loop
_sum += _average[_i]
_i += 1
if _i < _length: jump('loop')
result = _sum / _length
-
werewolf,
Я еще хоть немного (совсем чуть-чуть) понял первый пример, но на второй моих мозгов не хватило :(
Просто я не очень разбираюсь (ну тоесть совсем не разбираюсь) в таких штуках, как:
result, copyarr, jump, func и переменных с подчеркиванием
ну если тебе большая гибкость не нужна, то первого примера вполне хватит
func позволяет вызвать локацию, которая возвращает результат (в отличие от остальных переходов, где нет возвращаемого значения)
а в переменную result (или $result для строк) нужно записать возвращаемое значение