Просмотр полной версии : Скриншот в AS2
Привет всем. Я новичек но уже долгое время бьюсь над проблемой создания скриншотов клипов через вэб-интерфейс.
(внешний класс и пхп часть не обсуждаем)
import flash.display.BitmapData;
import com.quasimondo.display.BitmapExporter;
var webcam:Camera = Camera.get();
image_mc.cam.attachVideo(webcam);
this.createEmptyMovieClip("image_mc", this.getNextHighestDepth());
image_mc.loadMovie("http://test1.ru/screnshoter/flash/PHP/Creatures.swf");
var snapshot:BitmapData = new BitmapData(240,320,false);
BitmapExporter.gatewayURL = "http://test1.ru/screnshoter/flash/PHP/BitmapExporter.php";
snapshot.draw( image_mc);
BitmapExporter.saveBitmap(snapshot, "snapshot.png", "turboscan", 0 );
В общем он сохраняет пустые скрины, хотя на экране мувик подгружается и показывается.
если я уберу создание нового клипа и подгрузку, и создам вручную в исходнике мувик image_mc с картинкой или анимацией то он все правильно скринит.
В принципе пробовал рисовать в созданном клипе , скринит нормально вместе с рисунком.
this.createEmptyMovieClip("image_mc", this.getNextHighestDepth());
with (image_mc){ тут рисуем };
Что сделать чтобы скринил загруженный мувик ? Заранее спасибо.
1. Вы не дожидаетесь загрузки.
2. Не извесно, находится ли картинка в "доверенной" зоне или нет.
2. loadMovie - deprecated, используйте вместо него MovieClipLoader, особенно обратите внимание на checkPolicyFile свойство этого класса.
1. Вы не дожидаетесь загрузки.
2. Не извесно, находится ли картинка в "доверенной" зоне или нет.
2. loadMovie - deprecated, используйте вместо него MovieClipLoader, особенно обратите внимание на checkPolicyFile свойство этого класса.
Переписал п.3
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);
this.onLoadStart = function(mc:MovieClip) {
trace(mc._url);
};
loader.loadClip("http://test1.ru/screnshoter/flash/PHP/Creatures.swf",_root.createEmptyMovieClip("image_mc",0));
все равно не работает, однако если snapshot.draw( image_mc ); запускать кнопкой а не автоматом скринит нормально, сл-но проблема в п.1. Подскажите как дождаться загрузки и запуска загружаемого ролика?
Ну так скриншот нужно делать в слушателе onLoadInit или после него (по времени).
Ну так скриншот нужно делать в слушателе onLoadInit или после него (по времени).
import flash.display.BitmapData;
import com.quasimondo.display.BitmapExporter;
var webcam:Camera = Camera.get();
image_mc.cam.attachVideo(webcam);
var snapshot:BitmapData = new BitmapData(240,320,false);
BitmapExporter.gatewayURL = "http://test1.ru/screnshoter/flash/PHP/BitmapExporter.php";
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);
this.onLoadStart = function(mc:MovieClip) {
trace("Загрузка из " + mc._url);
};
this.onLoadComplete = function(mc:MovieClip) {
trace("Загружен!");
};
this.onLoadInit = function(mc:MovieClip) {
trace("Запущен!");
snapshot.draw(image_mc);
BitmapExporter.saveBitmap(snapshot, "snapshot.png", "turboscan", 0 );
};
loader.loadClip("http://test1.ru/screnshoter/flash/PHP/Creatures.swf",_root.createEmptyMovieClip("image_mc",0));
function save() {
snapshot.draw(image_mc);
BitmapExporter.saveBitmap(snapshot, "snapshot.png", "turboscan", 0 ); };
save_btn.onPress = function() {
this._parent.save();
};
Все равно пустоту скринит, а при нажатии на кнопку нормально.
Первый кадр загружаемого мувика содержит изображение? Попробуйте отложить снятие скриншота на один кадр.
Первый кадр загружаемого мувика содержит изображение? Попробуйте отложить снятие скриншота на один кадр.
Да содержит. Но скрин снимается буквально за милисикунды до того как он запустится. Я пробовал вместо роликов подгружать картинку, с ней все ок. Нужно как то остановить выполнение скрипта на 1 сек.
Как успехи со снятием скрина на следующий после onLoadInit кадр?
Как успехи со снятием скрина на следующий после onLoadInit кадр?
А как снять на следующем кадре ?
И еще вопросик, на некоторые флэшки в FL2 трасировка постоянно выдает *** Security Sandbox Violation ***
SecurityDomain 'кекекеек.swf' tried to access incompatible context 'кекекеек.swf' что сильно тормозит выполнение скрипта
this.onLoadInit = function(mc:MovieClip) {
this.loader.removeListener(this);
this.loader = null;
this.onEnterFrame = handler_onEnterFrame;
};
function handler_onEnterFrame():Void {
delete this.onEnterFrame;
trace("Запущен!");
snapshot.draw(image_mc);
BitmapExporter.saveBitmap(snapshot, "snapshot.png", "turboscan", 0 );
}
По второму вопросу: перестарались с изменением названий файлов. названия должны быть разные. хехе.
Почтайте про политики безопасности FP и crossdomain.xml в частности.
this.onLoadInit = function(mc:MovieClip) {
this.loader.removeListener(this);
this.loader = null;
this.onEnterFrame = handler_onEnterFrame;
};
function handler_onEnterFrame():Void {
delete this.onEnterFrame;
trace("Запущен!");
snapshot.draw(image_mc);
BitmapExporter.saveBitmap(snapshot, "snapshot.png", "turboscan", 0 );
}
Не помогает, хотя теперь скринятся простенькие (не нагруженные графой) ролики. Нужно побольше задерку сделать, а желательно с переменной.
Спасибо вам за помощь! Есть еще вопросик! загружаемому ролику можно как то подставить переменную которую он запрашивает у проигрывателя.
В некоторых флэшках FL2 стоит проверка девайса
displayDevice = substring(eval("/:$version"), 0, 2) == "FL" ? "phone" : "pc";
Можно загружаемому ролику подсунуть phone, даже если он запущен на PC
this.onLoadInit = function(mc:MovieClip) {
this.loader.removeListener(this);
this.loader = null;
mc.onEnterFrame = handler_onEnterFrame;
};
function handler_onEnterFrame():Void {
trace('try');
if (this._currentframe <= 0 ) return;
delete this.onEnterFrame;
trace("Запущен!");
snapshot.draw(image_mc);
BitmapExporter.saveBitmap(snapshot, "snapshot.png", "turboscan", 0 );
}
А эти ролики случайно не грузят в себя внешнюю графику? Тогда вопрос о скринах приобретает другой ракурс.
А эти ролики случайно не грузят в себя внешнюю графику? Тогда вопрос о скринах приобретает другой ракурс.
Это к вопросу о "тяжелых" роликах или о подставе "phone" ?
В обоих случаях нет не грузят. Во втором вопросе проблема заключается в том что если ролик запущен на "pc" а не на "phone" то он выдает совсем другую анимацию. А в некоторых случая вообще не запускается, пишет например только для телефона c FL2.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.