Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2016, 03:01
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Не изменяется флеш объект.
Вот есть сам объект:

<html>
	<head>
		<script type="text/javascript">
			function randomInteger(min, max)
			{
				var rand = min + Math.random() * (max - min)
				rand = Math.round(rand)
				return rand
			}
			function f() // Обработчик кнопки
			{
				var p = document.querySelector('param') // 
				var param = p.value.split('*')[2].split(':') // Разбить на элементы
				var r // Случайное число от 1 до 27, кроме 25
				while((r = randomInteger(1, 27)) == 25) {}
				param[13] = r // Записать параметр
				var val = "param=tgbut1*cmbut2*" + param[0]
				for(var i = 1, l = param.length; i < l; i++) val += ':' + param[i]
				p.value = val // Установить параметры
				alert(val)
			}
			function main()
			{
				document.querySelector('button').addEventListener('click', f)
			}
			document.addEventListener('DOMContentLoaded', main) // Вызвать функцию после постройки DOM
		</script>
	</head>
	<body>
		<center>
			<object type="application/x-shockwave-flash" data="http://dcdn.heroeswm.ru/swffiles/map.swf?ver=464276113" width="400" height="400">
				<param name="FlashVars" value="param=tgbut1*cmbut2*1:1:0:0:0:0:0:0:0:0:0::0:3" />
			</object>
			<br><br><br>
			<button>Изменить пункт назначения</button>
		</center>
	</body>
</html>


В этой строке: param=tgbut1*cmbut2*1:1:0:0:0:0:0:0:0:0:0::0:3
Последний параметр отвечает за то, в каком секторе будет нарисован красный крестик с мечом.

Вот если вставить код допустим в Real-time HTML Editor, и изменить этот параметр(вручную, от 1 до 27), страница как бы перезагружается и крестик изменяет своё расположение на карте.
А при нажатии кнопки(я сделал под под картой), ничего не происходит.
Т.е. я меняю этот параметр через JS, а крестик остаётся на месте.

Может можно как - то перезапустить, что - ли этот swf объект?

Последний раз редактировалось Артист, 12.11.2016 в 03:06.
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2016, 03:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Наверно флешку нун ремовить и перезаписать... собственно кады флешь запустился, он уже считал все параметры из кода, и ему пофег, что меняется... для смены в реальном времени нун сам флешь скрипт кавырять
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2016, 09:03
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

На странице с картой только один скрипт: swfobject22.js

Я так понял - это стандартный апи.
Содержит он вот такие функции:

registerObject - регистрирует новый объект
getObjectById - вернёт идентификатор объекта
embedSWF - встраивает объект
switchOffAutoHideShow - выключить автоскрытие показа? Видимо автовоспроизведение всё - таки...
hasFlashPlayerVersion - получает текущую версию флеш плейера
showExpressInstall - показывает окно установки плейера
removeSWF - удаляет объект
addDomLoadEvent - назначает вызов функции на событие
addLoadEvent - назначает вызов функции на событие
getQueryParamValue - получает параметры объекта
expressInstallCallback - то - ли установка плейера, то ли функция которая вызовется после...

Ничего нет про перезагрузку...
Может нужно удалить и заново создать?

Последний раз редактировалось Артист, 12.11.2016 в 09:08.
Ответить с цитированием
  #4 (permalink)  
Старый 13.11.2016, 13:27
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Всё получилось:
<html>
	<head>
		<script type="text/javascript" src="http://dcdn.heroeswm.ru/swfobject22.js"></script>
		<script type="text/javascript">
			function randomInteger(min, max)
			{
				var rand = min + Math.random() * (max - min)
				rand = Math.round(rand)
				return rand
			}
			function f() // Обработчик кнопки
			{
				var center = document.querySelector('center')

				var obj = center.children[0] // Объект

				var div = document.createElement('div')
				div.id = "content"
				div.innerHTML = "324234"
				center.insertBefore(div, obj)

				var data = obj.data
				var w = obj.width
				var h = obj.height

				var FlashVars = obj.children[0].value.split('*')[2].split(':') // Разбить на элементы
				var r // Случайное число от 1 до 27, кроме 25
				while((r = randomInteger(1, 27)) == 25) {}
				FlashVars[13] = r // Записать параметр
				var val = "param=tgbut1*cmbut2*" + FlashVars[0]
				for(var i = 1, l = FlashVars.length; i < l; i++) val += ':' + FlashVars[i]
				FlashVars = val // Установить параметры

				var bgcolor = obj.children[1].value
				var allowScriptAccess = obj.children[2].value
				var wmode = obj.children[3].value

				obj.id = "flashmaps"
 
                swfobject.removeSWF("flashmaps")

				swfobject.createSWF({data: data, width: w, height: h}, {FlashVars: FlashVars, bgcolor: bgcolor, allowScriptAccess: allowScriptAccess, wmode: wmode}, "content")
			}
			function main()
			{
				document.querySelector('button').addEventListener('click', f)
			}
			document.addEventListener('DOMContentLoaded', main) // Вызвать функцию после постройки DOM
		</script>
	</head>
	<body>
		<center>
			<object type="application/x-shockwave-flash" data="http://dcdn.heroeswm.ru/swffiles/map.swf?ver=464276113" width="450" height="450">
				<param name="FlashVars" value="param=tgbut1*cmbut2*1:1:0:0:0:0:0:0:0:0:0::0:1" />
				<param name="bgcolor" value="#ddd9cd" />
				<param name="allowScriptAccess" value="always" />
				<param name="wmode" value="opaque" />
				<div>
					<p>
						<a href="http://www.adobe.com/go/getflashplayer">
							<img src="http://dcdn.heroeswm.ru/i/get_flash_player.gif" alt="Get Adobe Flash player" />
						</a>
					</p>
				</div>
			</object>
			<br><br><br>
			<button>Изменить пункт назначения</button>
		</center>
	</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 13.11.2016, 14:49
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Можно выставить высоту окна отображения
[HTML run height=600]
Ответить с цитированием
  #6 (permalink)  
Старый 13.11.2016, 20:45
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Понял, спасибо ))

По теме, оказалось всё проще, не нужно никаких манипуляций с объектом проводить.
Меняем что нужно прямо в странице, находим элемент - родителя, копируем и заново вставляем его содержимое через innerHTML.
Всё.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объект не изменяется через прототип js-jedi-knight Общие вопросы Javascript 23 14.01.2016 23:03
Добавить объект в другой объект фонарик Общие вопросы Javascript 5 11.10.2015 01:57
Создать объект в объекте Bryant-24 Общие вопросы Javascript 3 10.07.2013 16:06
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45
Как с помощью document.write вывести флеш объект? elmirill Общие вопросы Javascript 4 23.04.2011 15:05