Я искал чистую утилиту Swift 3.0 для перехода на / unescape из ссылок на символы HTML (то есть для приложений на стороне сервера Swift на MacOS и Linux), но не нашел комплексных решений, поэтому я написал свою собственную реализацию : https://github.com/IBM-Swift/swift-html-entities
Пакет, HTMLEntities
, работает с символами HTML4 с именами символов, а также с шестнадцатеричным / dec числовые символьные ссылки, и он будет распознавать специальные числовые ссылки символов в спецификации W3 HTML5 (т. е.
не будет отображаться как знак Евро (unicode U+20AC
) и NOT как символ Юникода для U+0080
, а некоторые диапазоны
Пример использования:
import HTMLEntities
// encode example
let html = ""
print(html.htmlEscape())
// Prints ”<script>alert("abc")</script>"
// decode example
let htmlencoded = "<script>alert("abc")</script>"
print(htmlencoded.htmlUnescape())
// Prints ”"
И для примера OP:
print("The Weeknd ‘King Of The Fall’ [Video Premiere] | @TheWeeknd | #SoPhi ".htmlUnescape())
// prints "The Weeknd ‘King Of The Fall’ [Video Premiere] | @TheWeeknd | #SoPhi "
Редактировать: HTMLEntities
теперь поддерживает ссылки на символы HTML5 с именами символов с версии 2.0.0. Также реализован синтаксический анализ, совместимый с параметрами.
Переключение текстур может быть выполнено несколькими способами:
примитивы с фреймами, такие как <a-box>
или <a-sphere>
, представляют собой простой случай. Просто измените атрибут material.src
el.setAttribute('material', 'src', newTexture)
Модели могут быть довольно сложными, так как вам нужно переключить свойство mesh.map.texture
(возможно, для всех дочерних элементов, а не только для одной сетки). ).
var mesh = this.el.getObject3D('mesh')
var loader = new THREE.TextureLoader();
loader.load( url, (texture) => {
// onLoad callback
mesh.material.map = texture
mesh.material.needsUpdate = true
this.switch = !this.switch
}
)
Сначала я хотел сохранить информацию о текстуре и получить к ней доступ при нажатии <a-box>
, но простым способом было бы получить пару изображений
<img class=".images" ....>
<img class=".images" ....>
и компонент в каждом примитиве фрейма, который будет:
обнаруживать щелчки на этих изображениях -> хранить информацию -> использовать ее при нажатии:
обнаруживать щелчки на изображениях:
var els = document.getElementsByClassName("images");
Array.from(els).forEach((el) => {
el.addEventListener('click', (e)=>{
this.selectedTexture = e.target.src
})
});
применение текстуры при нажатии:
this.el.addEventListener('click', (e) => {
if (!this.selectedTexture) {
return
}
this.el.setAttribute("material", "src", this.selectedTexture)
})
Эта скрипка содержит все вышеперечисленное. Два блока сами переключают текстуры, а остальные будут применять выбранное изображение в качестве текстуры.