Перечень статей   choose language


Демонстрация движений



Соглашения

тегатрибутсвойствостиль
новые html-терминыlinealingpointdefault
значения новых html-терминовsideromb
старые html-терминыtdidlist
значения старых html-терминовcircle
коммуникационный xmlsoundsyncpower
значения коммуникационного xmlnouser
клавиатурные и мышиные командыenter

Концепция

Демонстрация движений предназначена для записи динамических схем, презентаций (в дополнение к статическим схемам, записываемым с помощью линий). Они состоит главным образом из движений отрезков (заданных как движение двух их концов). Часто нам требуется группировать не только два движения (двух концов отрезка), но и движение многих отрезков через разные интервалы времени. Такие группы будем называть модулями.

Такой конечный автомат более удобно записывать перечислением движений, а не писать функции на JavaScript (модуль "A" называется вызывающим элементом, объекты "B", "C", "D", "E" - исполняющими элемантами).

<A>
  <dragdot name=B x= y= num=10>
  <dragdot name=C x= y= num=20>
  <obj name=D ns=ns30>
  <obj name=E ns=ns40>
</A>
Чтобы выполнялся модуль "A", его имя, предваренное двоеточием, нужно указать в таблице переходов в поле "new state".
css1 F10 :A

Запишем все модули в отдельный файл, например, "b.txt", и добавим внутрь тега head следующий тег

<link src="./b.xml" type="module">

Движения

для изменения стиля
browser server module
<dot      name= num= cmd= os= ns= >
<section  name= num= cmd= os= ns= user-x= user-y= >
<line     name=      cmd= os= ns= user-x= user-y= >

<ele      name= num= cmd= os= ns= >

<obj      name=      cmd= os= ns= >

<module   name=      cmd= os= m= >                 
<dot      name= num=     ns= >
<section  name= num=     ns= >
<obj      name=          ns= >

<ele      name= num=     ns= >

<obj      name=          ns= >

<module   name=          m= >       

для изменения координат ломаной и местоположения узла дерева
browser server module
<dragdot  name= num=      x=  y= >

<dropdot  name= num=              onname= onnum= >
<dragline name=           dx= dy= >

<deldot   name= num= >                             
<dragdot  name= num= x=  y=  time=  >
<dragdot  name= num= x=  y=  speed= >

<dragline name=      dx= dy= time=  >
<dragline name=      dx= dy= speed= >
<deldot   name= num= >
<rotline  name=      angle=  time=  type= axis= >
<rotline  name=      angle=  speed= type= axis= >

для открытия нового окна
browser server module
<dot      name= num= cmd= os= ns=F>
<section  name= num= cmd= os= ns=F user-x= user-y= >
<line     name=      cmd= os= ns=F user-x= user-y= >

<ele      name= num= cmd= os= ns=F>

<obj      name=      cmd= os= ns=F>
          - не существуют -         

дополнительные движения
browser server module
                 - не существуют -                 
<sound src= >
<say type= data= voice= >           



Дополнительные параметры движений: время

В действиях по перемещению точки или ломаной (графа)

<dragdot  name= num= x=  y= >
<dragline name=      dx= dy= >
когда необходимо, чтобы положение изменялось не скачком, а плавно, в течение некоторого промежутка времени, используется атрибут time, который определяет за сколько секунд должно произойти перемещение. В случае, если необходимо задать не время достижения, а скорость движения к положению, используется атрибут speed в миллиметрах в секунду (mm/sec).

Отсутствие обоих этих параметров эквивалентно time = 0 и speed = ∞

Параметры time и speed взаимоисключающие.

<dragdot  name= x=  y=  num= time=  >
<dragdot  name= x=  y=  num= speed= >
<dragline name= dx= dy=      time=  >
<dragline name= dx= dy=      speed= >

Последний передвинутый объект лежит воверх всех других (в пределах тега layer).



Дополнительные движения

Вращения

Действие rotline вращает ломаную (граф), чье имя указано в атрибуте name, вокруг узла (этой или другой) ломаной - если ее атрибут type=id - или вокруг произвольной точки - если type=coord (происхождение обозначений: coord=coordinates). Уникальный идентификатор узла или координаты центра вращения находятся в атрибуте axis. Угол вращения задается в атрибуте angle в градусах. Может быть задано время вращения - для этого нужно определить атрибут time - или скорость вращения - для этого нужно определить атрибут speed в градусах в секунду.

Отсутствие обоих этих параметров эквивалентно time = 0 и speed = ∞

Параметры time и speed взаимоисключающие.

<rotline name= type= axis= angle= time=  >
<rotline name= type= axis= angle= speed= >

Звук

Щелканье мышью есть запуск некоторой процедуры, функции, начало работы некоторого объекта. В некоторых случаях необходимо, чтобы браузер голосом уведомлял пользователя, какая операция поступила на выполнение. При моделировании технических (и природных) процессов нужно, чтобы браузер произносил речевой комментарий или воспроизводил звуковой файл, содержащий звуки, издаваемые техническим (или природным) объектом.

Бывают следующие источники звука:


Голос (Voice) представляет собой собрание многих параметров: скорости (speed), высоты (height), громкости (power), перечисленных в отдельном файле.

v1 {
 speed:  128;
 height: 84;
 power:  100;
}
Разумеется, браузер имеет некоторый голос по умолчанию. Знаки "плюс" или "минус" указывают насколько нужно изменить параметр относительно величины, принятой по умолчанию.
v2 {
 speed:  +20;
 height: +10;
 power:  +50;
}

Если type=id, то атрибут voice произносимого html-тега имеет приоритет над атрибутом voice xml-тега.

<p   id=id1  voice=v2>произнеси это</p>
<say type=id data="id1" voice=v2>

Запишем все голоса в отдельный файл, например, "a.txt", и добавим внутрь тега head следующий тег

<link src="./a.txt" type="voice">

Подробности

Порядок действий

Браузер выполняет действия последовательно. Одновременно он выполняет действия, которые внутри тегов <<>> и <</>> Внутри одновременных участков выполнения он выполняет последовательно те действия, которые внутри тегов <> и </>

<<>>
  <dragdot name=B x= y= num=10>
  <dragdot name=C x= y= num=20>
<</>>
<<>>
  <obj name=D ns=ns30>
  <obj name=E ns=ns40>
<</>>
<<>>
  <<>>
    <dragdot name=B x= y= num=10>
    <dragdot name=C x= y= num=20>
  <</>>
  <obj name=D ns=ns30>
<</>>
<obj name=E ns=ns40>

Свойства модуля

Модуль имеет факультативный атрибут seq (происхождение обозначений: seq = sequence).

<module_name seq=seq_name> ... </module_name>
Последовательность (Sequence) представляет собой собрание следующих параметров: дозировки (doze), синхронности (sync), цикличности (cycle), перечисленных в отдельном файле.
module {
  doze:  pause;
  sync:  noserver;
  cycle: 9;
}

Параметр doze указывает, как должен реагировать модуль, если в течение времени выполнения он будет запущен еще раз пользователем или сервером. При этом происходящее с другими модулями во внимание не принимается.


Параметр sync указывает, когда должен быть выполнен другой модуль, который запущен во время выполнения данного.


Параметр cycle указывает количество повторов выполнения. Может быть целым числом или значением loop, указывающим повторять бесконечно. По умолчанию параметр равен единице (однократное воспроизведение).


Когда изменение состояния, местоположения и воспроизведение звука происходят одновременно, то длительность этого одновременного мероприятия равна наибольшей из следующих длительностей: длительности перехода в новое состояние time, длительности перехода в новое положение time, времени воспроизведения звука.


Запишем все последовательности в отдельный файл, например, "d.txt", и добавим внутрь тега head следующий тег

<link src="./d.txt" type="sequence">

Параметры модуля - doze, sync, cycle - могут быть указаны в модуле непосредственно.

<module_name doze=pause sync=noserver cycle=9> ... </module_name>

Форма отправляет

Если объект, вызвавший модуль, находится внутри тега form, о выполнении модуля браузер сообщает серверу. Форма отправляет данные по нажатию на кнопку "submit", но только после выполнения модуля.

<module name=A  cmd=F10 os=... m=A>
<module name=A2 cmd=F10 os=... m=A>
<module name=A3 cmd=F10 os=... m=A>

Команда, которая пытается придать некоторому объекту неизвестное состояние, приводит к открытию нового окна. Браузер не отправляет на сервер никакой дополнительной информации, если такая команда выполнялась в модуле.

Браузер не проверяет возможность или невозможность выполнения всех команд модуля перед началом выполнения.

Загрузка новой страницы, запущенная из модуля, прекратит выполнение действий модуля, не успевших выполнится.



Резюме

Атрибуты
тег атрибут список возможных значений
any voice  
link type module, voice, sequence


Атрибуты
тег атрибут значение по умолчанию список возможных значений
sound src    
say type ph ph, id, sil
data    
voice    


Свойства "Voice"
свойство значение по умолчанию список возможных значений
speed   любое целое число
height   любое целое число
power   любое целое число


Свойства "Sequence"
свойство значение по умолчанию список возможных значений
doze home home, pause, repeat, break
sync market market, dialogue, noserver, nouser
cycle 1 любое целое неотрицательное число, loop



html60author



Перечень статей   choose language


Используются технологии uCoz