Перейти к основному содержимому

13.4. Пытаюсь сделать кликабельную картинку с помощью тегов MAP и AREA, но ничего не получается

В: Пытаюсь сделать кликабельную картинку с помощью тегов MAP и AREA, но ничего не получается.

Не выводится картинка, не работает область клика, область клика смещена.

О:

Чтобы ответить на этот вопрос, пойдём по порядку.

Во-первых, в вашей игре должна быть включена поддержка HTML, иначе вместо картинки вы увидите много HTML-тегов. Поддержку HTML включаем, прописывая в нужном месте (например, на самой первой локации в игре) следующую команду:

usehtml=1

Во-вторых, все HTML-теги являются частью выводимого на экран текста, поэтому, чтобы выводить их на экран, нужно использовать те же самые операторы, что и для вывода всего остального текста. Таким образом и теги <MAP>, <AREA> и тег <img> нужно выводить с помощью операторов *p или p.

В-третьих, если вам удобнее записывать каждый тег отдельной строкой, нужно помнить, что QSP не игнорирует переводы строк между тегами, и это может привести к созданию артефактов. Все теги должны выводиться одной строкой, поэтому для записи команд, выводящих теги, используйте именно операторы *p и p.

Руководствуясь этими тремя правилами, создайте отдельный файл игры, и протестируйте в нём работу вашей картинки-карты.

Вот пример картинки, в центре которой будет создана кликабельная область.

! включаем поддержку HTML

usehtml=1
! задаём разметку карты

*p '<MAP name="KRUG">'
*p '<AREA shape="circle" coords="200,200,175" href="exec:x=x+1 & pl x">'
*p '</MAP>'
! выводим изображение карты

*p '<img src="путь к файлу изображения/изображение.png" usemap="#KRUG">'

Обратите внимание, при наведении на кликабельную область в классическом плеере курсор не будет менять свой внешний вид.

Более подробно о том, как работать с тегами MAP и AREA вы можете прочитать в разделе 16.10. Как работать с тегами MAP и AREA?