Как динамически создать массив в Javascript sessionstorage / HTML5 - PullRequest
3 голосов
/ 28 ноября 2011

Попытка воспроизвести звук через javascript и хотите изменить его динамически с помощью sessionstorage

Ниже приведена упрощенная версия, которая воспроизводит звук / с в Android / FF Linux / Win, когда вы нажимаете кнопку «sprite me» - я включил другие кнопки в качестве примера для установки и получения значений сеанса в HTML5.

http://globability.org/webapp/asprite20111124_8.html

В вики ниже приведены спецификации телефона Android, где он работает: (Samsung Galaxy SII) на случай, если вам интересно

http://globability.org/wiki/doku.php?id=current_working_specs_p-tab / также см. http://globability.org/wiki/doku.php?id=mobile_pointing_tablet, чтобы получить правильное представление о том, над чем я работаю.

Мне нужен javascript «play soundsprite», который вы можете увидеть ниже в следующем разделе, загружающий из sessionstorage и вставляющий значения, загруженные из sessionstorage, вставленные в массив.

Я не ищу каких-либо изменений в том, как воспроизводится звук - просто нужно, чтобы динамически создаваемый массив работал изнутри конкретного javascript.

Приведенный ниже код основан на идее soundprite от www.phpied.com/audio-sprites/ Стояна Стефанова - сделан для уменьшения http-вызовов, необходимых для воспроизведения звуков ... Также стабилизирует качество звука, меньше прерывистого звука и т. Д. .

Antway здесь гласит: ВАМ НУЖНО СМОТРЕТЬ НА СЕКЦИЮ ПСЕВДОКОДА - Остальное функционирует

<script>
var thing = 'the thing';

function shut() {
if (typeof thing.pause !== 'undefined') {
    thing.pause();
}
}

function log(what) {
document.getElementById('log').innerHTML += what + "<br>";
}

var spriteme = function(){
var sprites = {
// id: [start, length]

'blank':[0.1, 0.5], //This the first sprite, it has to be the first defined and is 
called first, it is a blank piece of sound in the combined sound file and needed as of 
now.

'success':[13,  2,5],

/* I would like to be able to set the parameters i.e. sound bite to play dynamically - 
here a pseudocode example using session storage in preparation for getting the sound 
parameters from a database


'wordgen'[null,null]; 
//this array should be dynamically built from values read from the two session storage keys not sure you need the new thing in HTML5

sessionStorage.globabilitykey1;
sessionStorage.globabilitykey2;

strkey1=globabilitykey1
strkey2=globabilitykey2

var gkey1=parsefloat(strkey1)
var gkey2=parsefloat(strkey2)

'wordgen':[gkey1,gkey2]


and then the idea is to replace the array success in the script with the "generated" 
array 'wordgen' to allow dynamic seting of sound to play back  */       

//the following are sound bites from the collection of soundsprites the site plays from

'word1': [0.5, 2,36], //one
'word2': [3.1,  3.0], //two
'word3': [7.0,  1.82], //three
'word4': [10.03, 2], //four ?

},
song = ['blank', 'success'], 
//here you're setting the playback sequence (this is where I would like to replace 'success' with 'wordgen'
current = 0,
id = song[current],
start = 0,
end = sprites[id][1],
int;

thing = document.getElementById('sprite');
thing.play();

log('file: ' + thing.currentSrc);
log(id + ': start: ' + sprites[id].join(', length: '));

// change
int = setInterval(function() {
if (thing.currentTime > end) {
thing.pause();
if (current === song.length - 1) {
clearInterval(int);
return;
}
current++;
id = song[current];
start = sprites[id][0];
end = start + sprites[id][1]
thing.currentTime = start;
thing.play();
log(id + ': start: ' + sprites[id].join(', length: '));
}
}, 10);   
};
</script>

Любые идеи о том, как динамически создать массив 'wordgen' в javascript на основе значений, является sessionstorage?

Весь код / ​​рабочий пример можно увидеть здесь: http://globability.org/webapp/asprite20111124_8.html

Я знаю, что страница - один ужасный беспорядок ... но это альфа-прототип :)

1 Ответ

1 голос
/ 01 декабря 2011

Аааа ... это было оооочень просто, я был так близок к тому, чтобы решить это сам, однако добрый фрилансер на freelancer.com, который, очевидно, помог мне воплотить в жизнь одну из моих идей, сделал это снова ...

И без лишних слов:

'wordgen': eval ("[" + sessionStorage.globabilitykey1 + "," + sessionStorage.globabilitykey2 + "]"),

Это было то, чтоМне нужно было - я пытался сделать то же самое, но без « eval » впереди и paranthesis вокруг аргументов ....

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

Вот ссылка на рабочую страницу, если вы хотите попробовать, и если вы хотитесм. код в «entirity»: http://globability.org/webapp/asprite20111201_2.html - Спасибо тем, кто проголосовал за вопрос !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...