PDA

Просмотр полной версии : Как отключить звук у public swf files?


waza123
05.05.2007, 21:37
У меня есть сайт, где люди могут заливать свой баннер в формате .swf ,
но некоторые встраивают туда музыку, и когда кто то заходит на сайт, то слышит его музу..

Можно ли как то отключить запуск музыки с помощью HTML или другими способами ?

Kikasso
05.05.2007, 22:07
Музыка - это самое невинное, что может быть в этом баннере...
Надежного способа отключить музыку нет.

waza123
05.05.2007, 22:53
есть, придумал как:

disable_music.swf?s=they_banner_with_music.swf


disable_music.swf content:

loadMovie(s,_root);
snd=new Sound();
snd.setVolume(0);

Kikasso
05.05.2007, 23:04
А вы уверены, что в баннере умник обратно звук не включит?
Например, так:
snd=new Sound();
snd.setVolume(100);
snd.loadSound("http://bannerdomain.ru/bannersound.mp3", true );
и еще подарочек там может быть:
function coolXakep(){
getURL("javascript:alert('hello baby');" );
}
setInterval(coolXakep , 5000 );Ну что-то вроде этого.

waza123
05.05.2007, 23:36
ну запуск JS можно отключить с помощю HTML добавив в EMBED тег такой параметр:

allowScriptAccess=never


а что бы звук невключал, то можно запускать всё время snd.setVolume(0);


loadMovie(s,_root);
snd=new Sound();
snd.setVolume(0);
setInterval(snd.setVolume(0),1);

waza123
06.05.2007, 00:10
question:

у файла disable_music.swf background белиый

но у других swf разные bg, и когда disable_music.swf подгружает другие swf , то у них тоже становится bg белый.. Как это избежать / пофиксить?

Kikasso
06.05.2007, 00:16
Эх, плохо вы знаете кулхацкеров.. Они ваш интервал грохнут и не почешутся.
Заставлять что-то выполняться 1000 раз в секунду - не самая лучшая идея.
Напишите тех.требования для баннеров на вашем сайте и предложите их придерживаться.
Насчет отключить JS - ну, такой подарочек например:
function coolXakep(){
getURL("http://flasher.ru/forum", "_blank" );
}
setInterval(coolXakep , 5000 );

question:
у файла disable_music.swf background белиый
но у других swf разные bg, и когда disable_music.swf подгружает другие swf , то у них тоже становится bg белый.. Как это избежать / пофиксить?
У флешки бакграунд такого цвета, какой указан в параметрах object/embed

waza123
06.05.2007, 01:03
да жестока, не вижу способа протекции от
getURL("http://flasher.ru/forum", "_blank" );

есть идеи ? Не хочется просто так взять и отключить поддержку swf из за того что нету вариантов протекции...

я не гуру в action scripts, но может кто то может предположить, что бы можно было бы добавить в этот disable_music.swf или будем назеватб это loader.swf (как crack loader), что бы тот недавал запускать getURL("http://flasher.ru/forum", "_blank" ); если на него ненажали (click)

p.s: но getURL("http://flasher.ru/forum", "_blank" ); пашет только на IE.. у firefox smart popup blocker

etc
06.05.2007, 01:48
Попробуйте в html-коде для флеша выставить параметры в:

* enableJSURL=false;

* enableHREF=false

* saveEmbedTags=true

* allowScriptAccess=never

* allownetworking=internal

Kikasso
06.05.2007, 02:21
__etc, главное в баннере - возможность по нему кликнуть, разве не так? То, что вы пишите, выглядит внушительно, но похоже уберет такую возможность.. p.s: но getURL("http://flasher.ru/forum", "_blank" ); пашет только на IE.. у firefox smart popup blocker
Ну это для примера, какая бяка может быть во флеш-баннере. Можно и винду подвесить. Хотите примерчик? :quiet:
Выставьте технические требования на баннеры. И настоятельно рекомендуйте их придерживаться.
Интервалы в баннере можно в принципе и грохнуть (http://www.flasher.ru/forum/showthread.php?p=637116), но их могут опять поставить, на таймлайне.. А бяку искать - гиблое дело.

etc
06.05.2007, 02:38
Проще предварительно проводить модерацию.

waza123
06.05.2007, 04:09
в ActionScripts можно убить интервал
setInterval(snd.setVolume(0),1); у которого нету имяни ?

я понемаю еслиб было бы так:
name = setInterval(snd.setVolume(0),1);
clearinterval(name); // bye bye interval..

Kikasso
06.05.2007, 04:36
__etc, правда ваша. Безусловно нельзя что попало на свой сайт ставить. Модерация - безусловно, только как без открывания файла убедится в отсутствии бяки? Она ведь не с первого раза может сработать..
Репутация человека, который поставил баннер - это серьезно.
в ActionScripts можно убить интервал
setInterval(snd.setVolume(0),1); у которого нету имяни ?
я понемаю еслиб было бы так:
name = setInterval(snd.setVolume(0),1);
clearinterval(name); // bye bye interval..
waza123, на ошибки не ставят интервалы :taunt: И ошибками не снИмают)))
И 1000 раз в секунду - это, ей-богу, запредел.
А по вопросу - там в теме разобрали, как это сделать. Но не спасет на 100% .

waza123
06.05.2007, 12:17
ну придумай как на 100% избавиться от хака в public swf

Kikasso
06.05.2007, 12:51
Ну никак на 100%. Вот __etc совет дельный дает. Смотреть предварительно.
По поводу интервалов - по ссылке есть решения.
http://www.flasher.ru/forum/showpost.php?p=637335&postcount=22
Убить все интервалы, которые были посажены. Это, как видите, просто.
http://www.flasher.ru/forum/showpost.php?p=637199&postcount=18
Подменить функцию, что сажает интервал и собирать все id интервалов в "мешок". Это сложнее.
Оба способа требуют загрузки мувика в свой. И не дают гарантии 100%.
Кстати, сделайте мувик, внутри это:
var pathToBanner = "banner.swf";
var mc = createEmptyMovieClip( "mc", 1 );
var snd = new Sound( mc );
snd.setVolume(0);
mc.createEmptyMovieClip( "banner", 1 ).loadMovie( pathToBanner );
Вместо pathToBanner передавайте путь к баннеру, и от нечаяно вставленных звуков вы застрахованы процентов на 90. Вместо loadMovie можно использовать MovieClipLoader.
Зы - не проверял, но ошибаться вроде негде.

waza123
06.05.2007, 13:31
а какой смысл брать этот ActionScript, если он не спасёт на все 100% .. ?

нету идей которые бы спасли на все 100% ?

etc
06.05.2007, 13:34
По-моему вы фигней занимаетесь. Проблема решается просто и легко, я уже написал, как. Обычный getURL каждые 10 фреймов всю малину испортит и без интервалов. А getURL отключать нельзя, потому что это баннер. Отключение getURL я описал уже.

iNils
06.05.2007, 16:36
нету идей которые бы спасли на все 100% ?Ответ был дан - предмодерация. Других вариантов нет и не будет, даже если вы воспользуетесь публикацией под 4-5 плеер. Цикл и getURL могут повесить все на корню. Тема закрыта.