Вход

Просмотр полной версии : loadClip и JPG картинка с вебкамеры с постоянным обновлением


alwwwex
01.05.2010, 04:00
Добрый день.

Мне потребовалось добиться отображения картинки с веб-камеры в флеш-ролике.
Именно картинки, а не потокового видео - т.е есть постоянная ссылка на JPG картинку которая постоянно обновляется. На сайте, где сейчас показывается изображение с камеры, сделан простой "рефреш" и для борьбы с кешированием каждый раз к названию картинки прибавляется рандомное значение (к примеру http://site.com/img.jpg?rand=130). По сути, нужно добиться подобного результата на Flash.

на данный момент добился однократного отображения картинки, при помощи:
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);

function onLoadInit(_mc:MovieClip) {
trace("loaded");
};

loader.loadClip("http://www.site.com/img.jpg", img_holder);

Начал делать далее, но возникли проблемы:

если поставить это на постоянный цикл - то картинка может не успеть загрузиться
если делать через проверку загрузки - нужно как то заменять картинку в клипе со старой на новую.


Прошу помощи и совета. С loadClip, я к сожалению работал очень мало, но пытаюсь разобраться. Меня интересует больше второй пункт - как можно запоминать старую картинку, подгружать следующую и когда загрузиться - заменять их?

Заранее спасибо.

Tails
01.05.2010, 04:43
Не проблема, грузите каждую новую картинку только после срабатывания onLoadInit предыдущей, чтоб картинки сохранялись, нужно для каждой новой картинки делать контенер, атачить его из библиотеки или создовать скриптом новый, а старую картинку в предыдущем контенере: _visible=false;
Таким макаром можно будет сделать даже отмотку видео назад, просмотр предыдущего участка и многое другое, былабы фантазия :)

alwwwex
01.05.2010, 15:03
Tails, Спасибо! :drinks:
Именно подсказки и не хватало)
Определился, и написал вполне рабочий скрипт. Возможно он не оптимизирован, но работает. Старые контейнеры я не трогал - новые просто создаются "поверх".

var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);
var ok = true; // trigger to load new img
var camfpspause = 1000; // pause 1 sec
var picfromcam= "http://www.site.com/img.jpg?rand="; // cam img url

function loadnewpic() {
startTime = getTimer();
this.onEnterFrame = function () {
currentTime = getTimer();
if(currentTime-startTime > camfpspause && ok==true) {
var container:MovieClip = this.createEmptyMovieClip("container"+Math.random()*10, this.getNextHighestDepth());
loader.loadClip(picfromcam+Math.random()*100, container);
ok = false;
}
}
};

function onLoadInit(_mc:MovieClip) {
loadnewpic();
ok = true;
};

loadnewpic();