Управление текстурой рамки над отдельными объектами

Я искал чистую утилиту 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. Также реализован синтаксический анализ, совместимый с параметрами.

0
задан ilsloaoycd 5 March 2019 в 00:42
поделиться

1 ответ

Переключение текстур может быть выполнено несколькими способами:

  • примитивы с фреймами, такие как <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)
})

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

0
ответ дан Piotr Adam Milewski 5 March 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: