![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2009
Сообщений: 62
|
Я вставляю флешку на страницу с помощью SWFObject. Вопрос такой: можно ли потом, уже после вставки поменять атрибут wmode. Или хотя бы бекграунд ?
__________________
Super Blog |
|
|||||
|
Модрон-ветеринар
|
Меняйте. Можете с помощью JS, например.
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 62
|
А как это сделать? Разве флеш реагирует на JS?
Цитата:
__________________
Super Blog |
|
|||||
|
Модрон-ветеринар
|
Вам же к не флешке нужно обращаться с помощью JS.
Просто делайте перепубликацию - меняйте или wmode или bgcolor. Если хотите, то и к флешке можно легко обратиться с помощью класса ExternalInterface, который есть и в AS2 и в AS3. Откройте хелп и найдите пример для класса ExternalInterface.addCallback. Что угодно можно изменить в ней на "ходу". |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 62
|
Ну так wmode задаеться с помощью джава скрипта. А как прямо через АС3 задать wmode ?
__________________
Super Blog |
|
|||||
|
Модрон-ветеринар
|
Можно использовать класс ExternalInterface. Вызываете из флешки с его помощью JS-функцию и перепубликовываете как хотите.
Вот вам близкий пример на AS2. Меняем размеры блока, в котором опубликована флешка: import flash.external.*; var blockWidth:String = '500px'; var blockHeight:String = '100px'; var javaScriptFunction:String = 'function setSize() { var flash = document.getElementById("flash"); flash.style.width = "' + blockWidth +'"; flash.style.height = "' + blockHeight +'"; }'; ExternalInterface.call (javaScriptFunction); //в нужный момент вызываем Просто напишите функцию, которая будет перепубликовывать флешку и вызывайте ее из флеша с помощью ExternalInterface.call Последний раз редактировалось mooncar; 23.05.2010 в 00:15. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 62
|
Нет, мне нужно джава скриптом изменить атрибут флеша. Это не через действие флешки, а через действие пользователя на странице. Изменить wmode. насколько я понял это нужно джава скриптом передать в флешку команду, и сама флешка изменит свой wmode ?
__________________
Super Blog |
|
|||||
|
Модрон-ветеринар
|
Вам в процессе выполнения флешки нужно? То есть "после вставки" == "в процессе выполнения" ?
Видимо без перепубликации никак. Цитата:
Вообще: ExternalInterface.call - вызывает JS-функцию на странице. ExternalInterface.addCallback - вызывает со страницы функцию внутри флешки. Я так понял, что вариант с изменяемой прозрачностью внутреннего фона флешки (когда она сама опубликована изначально прозрачной) - тоже подходящее решение, вот пример набросал: http://21multihinge.ru/dyn/dyn.htm Флешка публикуется изначально с wmode = 'transparent'. Затем с помощью метода ExternalInterface.addCallback меняем прозрачность некого фона bg внутри флешки. Если интересны подробности, то вот код AS2: import flash.external.*; var setBg:Boolean = ExternalInterface.addCallback('setBackground', null, setBackgroundMode); function setBackgroundMode (modes:String) { switch (modes) { case 'non_bg': bg._alpha = 0; break ; case 'with_bg': bg._alpha = 100; break ; } test.text = str + bg._alpha ; } var str:String = 'Прозрачность фона = '; <head>
.....
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
function setWmode(mode) {
var flash = document.getElementById("dynamic");
flash.setBackground(mode);
}
</script>
</head>
<body>
....
<div style="width:240px; height:400px">
<div id="dynamic">
....
<script type="text/javascript">
var pFlashvars = false;
var pParams= { menu: 'false', allowScriptAccess: 'always', allowFullScreen: 'false', quality: 'high', bgcolor: '#88909A', wmode: 'transparent' };
var pAttributes = false;
swfobject.embedSWF('dynattr.swf', 'dynamic', '240', '400', '8.0.0', 'expressInstall.swf', pFlashvars, pParams, pAttributes);
</script>
....
<input type="button" value="Отключить внутренний фон у флешки" onclick="setWmode('non_bg')" style="width:240px"/>
<input type="button" value="Включить внутренний фон у флешки" onclick="setWmode('with_bg')" style="width:240px"/>
....
</body>
</html>
Последний раз редактировалось mooncar; 23.05.2010 в 03:36. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|