Как сделать конструктор объекта, который назначает пару ключ-значение с помощью функции onclick

Я пытаюсь сделать из друга приложение для деки. Пользовательский интерфейс будет иметь сетку размером 4 x 5 (или более) с различными гранями в формате.png, который после включения будет воспроизводить аудиофайл.

Я не уверен, как сделать конструктор объекта, который дает объекту функцию onclick с назначенным звуковым файлом.

Моя цель - использовать мой makeNewFace() функция для создания объекта, присвоения ему значения изображения, значения звукового файла и функции автоматического включения для воспроизведения указанного звукового файла.

Наконец, я хочу поместить этот объект в мой faceArray, который будет автоматически отображаться на моем index.html файл как .png лицо с назначенной функцией onclick для воспроизведения соответствующего звукового файла.

Надеюсь, у меня есть смысл.

//objects array with an image, sound, and string saying

faceArray = [

{ image: 'numbaniFace.png',
  sound: 'numbaniSaying.mp3',
  saying: 'Nooombaniii'
},

{ image: 'stanfordFace.png',
  sound: 'stanfordSaying.mp3',
  saying: 'Stanford Alumni'
}
];


function makeNewFace(image, sound, saying){
    this.image = image;
    this.sound = sound;
    this.saying = saying;

    var newImg = document.createElement('img');
    newImg.setAttribute('src', image);
    newImg.setAttribute('onclick', playSound(sound));
}

function playSound(){
    //????
}

1 ответ

Возможно, вы попытаетесь сделать это как

function MakeNewFace(img, snd, saying){
  this.image  = img;
  this.sound  = new Audio(snd);
  this.saying = saying;
  this.newImg = document.createElement('img');
  this.newImg.setAttribute('src', this.image);
  this.newImg.addEventListener("click", this.sound.play.bind(this.sound));
}

var face = new MakeNewFace("http://metiscappadociatours.com/wp-content/uploads/2015/10/butterfly-balloons1.jpg","http://www.vibrationdata.com/Petrov_D.mp3","hey..!"),
   myDiv = document.getElementById("myDiv");
myDiv.appendChild(face.newImg);
img {
    margin: 0 5% 0;
    max-width: 90%;
    max-height: 100%;
    }
<div id="myDiv"></div>

Другие вопросы по тегам