Shockwave Flash
Графика, Flash, pdf
🕛 01.11.2006, 15:28
PHP позволяет создавать файлы Shockwave Flash посредством библиотеки (созданной Paul Haeberli) Libswf, которую можно загрузить с http://reality.sgi.com/grafica/flash/. Прикомпилировать libswf к РНР можно параметром -w1th-swf[=OIR], где DIR - место размещения каталогов include (содержит файл swf.h) и lib (содержит файл libswf.a). Следующий пример демонстрирует создание Flash-анимации:
<?php swf_openfile ("test.swf". 256. 256. 30. 1, 1. 1
. swf_ortho2 (-100. 100. -100. 100): swfjJefinelme
(1. -70. 0. 70. 0. .2). swfjiefinerect (4. 60. -10. 70. 0. 0).
swfjtefinerect (5. -60. 0. -70. 10. 0):
sv,f_addcolor (0. 0. 0. 0):
swfjjefinefont (10. "Mod"): swf_fontsize (5):
swfjfontslant (10).
swf_definetext (11. "This be Flash wit PHP!". 1):
swf_pushmatnx (): swf_translate
(-50. 80. 0). swf_placeobject (11. 60). swf_popmatrix ():
for ($1 0; $1 < 30: $i++) { p $p = $i/(30-l):
svrf_pushmatnx (): m
swf_scale (l-($p*.9). 1. 1). 1
swf_rotate (60*$p. 'z'):
swf_translate (20+20*$p. Sp/1 5. 0):
swf_rotate (270*$p. 'i );
swf_addcolor ($p. 0. $p/l,2. -$p);
swf_placeobject (1. 50);
swf_placeobject (4. 50).
swf_p1aceobject (5. 50).
swfjpopmatnx (): swf_showframe (): }
for ($1 = 0: $1 < 30: $т++)
{ swfj-emoveobject (50): if {($i*4) == 0) { swf_showframe (): } }
swf_startdoactiof():
swf_actionstop (): swf_enddoaction():
swf_closeflle() ?>
Просмотреть результат исполнения сценария можно но адресу:
http:// www.designmultimedia.com/swfphp/test.swf.
libswf не поддерживается Windows. Разработка библиотеки была прекращена, а исходные коды недоступны.
swf_openfile
Открытие нового файла Shockwave Flash
void swf_openfile (string filename, float width, float height, float framerate, float r, float g, float b)
Создает файл filename с анимацией (шириной width, высотой height, частотой кадров framerate и цветом фона R.G.B).
Данная функция должна вызываться первой, иначе в сценарии возникнет ошибка «segfault». Если необходимо непосредственно отсылать файл браузеру, можно задать его имя как php://stdout.
swf_closefile
Закрытие текущего файла Shockwave Flash
void swf_cl osef "Л е ([int return_file])
Закрывает файл, открытый функцией swf_openfile(). При установке аргумента return_file функция возвращает содержимое SWF-файла.
// создает flash й'айл: выводит его и сохраняет в БД <?php
// Stext - аргумент сценария
// Параметры БД (для swf_savedata()) SDBHOST
"localhcst": SOBUSER = "иьег"; $DBPASS "secret1.
swf_openfile ("php //stdout". 256. 256. 30. 1. 1, i):
swf_def,nefont (10. "Ligon-Bold"): swfjon'size (12):
swf_fon.blant (10)
swf_definetext (11. $text. 1):
swf_pushmatnx ():
swf_translate (-50. 80. 0)
swf_placeobject (11. 60). swf_popmatnx ();
swf_showframe ():
swf_startdoaction (). swf_actiOPStop ():
swf_enddoaction ():
Sdata = swf_closefile (1):
Sdata ?swf_savedata (Sdata) :
die ("Невозможно сохранить SWF файл"):
// сохранить файл в БД function swf_savedata ($data) {
global SD6HOST. SDBUSER. SDBPASS:
Sdbh = (amysql_connect
(SDBHOST. SDBUSER. SDBPASS):
if (!$dbh) { die (spnntf ("Error [Id]: us".
mysql_errno (). mysql_error(): }
Sstmt = "INSERT INTO swf_files
(file) VALUES f'$data')":
$sth - @mysql_query (Sstmt. Sdbh): if (!Ssth) {
die (sorintf ("Error [ВД: *s".
mysql_errno (). mysql_error ())); }
?mysql_free_result (Ssth);
(amysql_clo^e (Sdbh). } >
swf_labelframe
Пометка текущего кадра
void swf_labelframe (string name)
swf_showframe
Отображение текущего кадра
void swf_showframe (void);
swf_setframe
Переключение кадра
void swf_setframe (int framenumber)
swf_getframe
Получение номера текущего кадра
int swf_getframe (void);
swf_mulcolor
Установка множителя цвета RGBA
void swfjnul col or (float r, float g, float b, float a)
Функция устанавливает значения (они могут быть положительными или отрицательными), на которые будут умножаться цвета выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().
swf_addcolor
Установка слагаемого цвета RGBA
void swf_addco1or (float г, float g, float b, float a)
Функция устанавливает значения (они могут быть положительными или отрицательными), которые будут добавляться к цвету выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().
swf_placeobject
Размещение объекта в текущем кадре
void swf_placeobject (int objid, int depth)
Размещает объект objid на уровне depth. Аргументы могут иметь значения от 1 до 65 535. При этом используются текущие: множитель и слагаемое цвета (swfjnulcolor() и swf_addcolor()) и матрица позиционирования объекта.
Полностью поддерживаются цвета RGBA.
swf_modifyobject
Изменение объекта
void swfjnodifyobject (int depth, int how)
Изменяет объект, расположенный на уровне depth, согласно аргументу how: если он имеет значение MOD_MATRIX, то изменяется положение объекта; если MOD_COLOR, то изменяется цвет. Эти константы можно комбинировать (MOD_MATR1X|MOD_COLOR).
MOD_COLOR использует текущие множитель и слагаемое цвета (swf_ mulcolor() и swf_addcolor()), a MOD_MATRIX - матрицу позиционирования объекта.
swf_removeobject
Удаление объекта
void swf_removeobject (int depth)
Удаляет объект, расположенный на уровне depth.
swf_nextid
Получение идентификатора следующего свободного объекта
int swfjiextid (void);
swf_startdoaction
Начало описания списка действий текущего кадра
void swf_startdoaction (void);
Функцию следует вызывать после завершения определения действий.
swf_actiongotoframe
Проигрывание кадра и остановка
void swf_actiongotoframe (int framenumber)
swf_actiongeturl
Получение URL анимации Shockwave Flash
void swf_actiongetur1 (string url, string target)
swf_actionnextframe
Перемещение вперед на один кадр
void swf_actionnextframe (void);
swf_actionprevframe
Перемещение назад на один кадр
void swf_actionprevframe (void);
swf_actionplay
Начало проигрывания анимации с текущего кадра
void swf_actionplay (void)
swf_actionstop
Остановка flash-анимации текущего кадра
void swf_actionstop (void);
swf_actiontogglequality
Переключение между высоким/низким качеством
void swf_actiontogglequality (void);
swf_actionwaitforframe
Пропуск действия, если кадр не был загружен
void swf_actionwaitforframe (int framenumber, int skipcount)
Функция проверяет видимость кадра framenumber и, если он не был загружен, пропускает указанное число действий skipcount. Полезно для анимаций типа "Loading...".
swf_actionsettarget
Установка контекста всех действий
void swf actionsettarget (string target)
Используется для управления другими flash-анимациями, проигрываемыми в текущий: момент.
swf_actiongotolabel
Отображение кадра с указанной меткой
void swf_actiongotolabel (string label)
После отображения проигрывание останавливается.
swf_enddoaction
Завершение текущего действия I void swf_enddoaction (void). Завершает текущее действие, начатое функцией swf_startdoaction().
swf_defineline
Создание линии
void swf_defineline (int objid, float xl, float yl, float x2, float y2. float width)
Рисует линию ((xl, yl) - (x2, y2)) шириной width.
swf_definerect
Создание прямоугольника
void swf_definerect (int objid, float xl. float yl, float x2, "float y2, float width)
Верхний левый угол задается (xl, yl), левый нижний (х2, у2). Ширина задается width (если она равна 0.0, прямоугольник будет закрашен).
swf_definepoly
Создание многоугольника
void swfjdefinepoly (int objid, array coords, int npoints, float width)
Углы задаются координатами (х, у) в массиве coords. Число углов - npoints. Ширина задастся width (если она равна 0.0, многоугольник будет закрашен).
swf_startshape
Начало создания сложной фигуры
void swf_startshape (int objid)
swf_shapelinesolid
Установка текущего стиля линии
void swf_shapelinesolid (float г, float g, float b, float a, float width)
Задаются параметры цвета rgba и ширина width (если указывается ширина 0.0, то линии рисоваться не будут).
swf_shapefilloff
Выключение заполнения текущей фигуры
void swf_shapefilloff (void);
swf _shapefillsolid
Установка стиля и цвета заполнения
void swf_shapefillsolid (float г, float g, float b, float a)
Устанавливает 100 % стиль заполнения цветом
swf_shapefillbitmapclip
Установка заполнения усеченной текстурой рисунка
void swf_shapefillbitmapclip (int bitmapid)
swf_shapefillbitmaptile
Установка заполнения размноженной текстурой рисунка
void swf_shapefillbitmaptile (int bitmapid)
swf_shapemoveto
Перемещение текущей позиции
void swf_shapemoveto (float x, float y)
swf_shapelineto
Черчение линии
void swf_shapelineto (float x, float y)
Чертит линию от текущей позиции до указанной.
swf_shapecurveto
Рисование квадратической кривой Безье
void swf_shapecurveto (float xl, float yl. float x2, float y2)
Чертит кривую от точки (xl, yl) до точки (х2, у2). Текущая позиция затем устанавливается в точке (х2, у2).
swf_shapecurveto3
Рисование кубической кривой Безье
3void swf_shapecurveto3 (float xl. float yl, float x2. float y2. float x3, float y3)
Чертит кривую, используя точки (xl, yl) и (х2, у2) как внешне ориентирующие, а точку (хЗ, уЗ) - как конечную. Текущая позиция затем устанавливается в точке (хЗ, уЗ).
swf_shapearc
Рисование дуги
void swf_shapearc (float x, float у, float г, float angl, float ang2)
Начальный и конечный угол дуги задается angl и ang2; центр - (х,у); радиус - г.
swf_endshape
Завершение определения текущей фигуры
void swf_endshape (void);
swf_definefont
Определение шрифта
void swf_definefont (int fontid, string fontname)
Задает шрифт fontname в качестве текущего и присваивает ему идентификатор fontid.
swf_setfont
Смена текущего шрифта
void swf_setfont (int fontid)
swHontsize
Смена размера текущего шрифта
void swf_fontsize (float size)
swHontslant
Установка наклона текущего шрифта
void swf_fontslant (float slant)
Угол задается значением slant (положительное значение создает наклон вперед, отрицательное - назад).
swf_fonttracking
Установка интервала между буквами
void swf_fonttracking (float tracking)
Положительное значение увеличивает, а отрицательное - уменьшает интервал.
swf_getfontinfo
Получение информации о высоте букв
array swf_getfontinfo (void);
Возвращает ассоциативный массив из двух элементов:
Aheight - высота в пикселах заглавной буквы А;
xheight - высота в пикселах маленькой буквы х.
swf_definetext
Создание строки текста
void swfjlefinetext (int objid. string str, int docenter)
Строка текста str создается с использованием текущего шрифта и его размера. Если в значении аргумента docenter указывается 1, то текст центрируется по горизонтали.
swf_textwidth
Расчет ширины строки
float swf_textwidth (string str)
Расчет использует размеры текущего шрифта.
swf_definebitmap
Определение рисунка
void swf_definebitmap (int objid, string image_name)
Добавляет рисунок GIF, JPEG, RGB или FI (он автоматически конвертируется в формат Flash JPEG или Flash color map).
swf_getbitmapinfo
Получение информации о рисунке
array swf_getbitmapinfo (int bitmapid)
Возвращает массив с информацией о рисунке bitmapid, содержащий элементы:
«size» - размер рисунка в байтах;
«width» - ширина рисунка в пикселах;
«height» - высота рисунка в пикселах.
swf_startsymbol
Определение символа
void swf_startsymbol (int objid)
Превращает объект в символ. Символы - это микроанимации flash, которые могут проигрываться одновременно.
swf_endsymbol
Завершение определения символа
void swf_endsymbol (void);
Завершает определение символа, начатое функцией swf_startsymbo1().
swf_ startbutton
Начало определения кнопки
void swf_startbutton (int objid. int type)
Аргументом type задается, может ли фокус перемещаться без нажатия на кнопку мышью (TYPE_MENUBUTTON) или нет (TYPE_PUSHBUTTON).
swf_addbuttonrecord
Управление расположением, видом и активной областью текущей кнопки void swf_addbuttonrecord (int states, int shapeid, int depth)
Аргументом states определяется, какие состояния может принимать кнопка: BSHitTest, BSDown. BSOver, BSUp; аргументом shapeid определяется внешний вид кнопки (идентификатор объекта), a depth -уровень расположения кнопки.
swf_startButton ($objid. TYPEJCNUBUTTON):
swf_addButtonRecord (BSDown|BSOver. Sbuttonlmageld. 340).
swf_onCondition (MenuEnt?r).
swf_actionGetUrl ("http-//www desTgnmultimed-a.com". "Jevell"):
swf onCondltion (MenuExH):
swf_actTonGetUrl ("". "_levell"); swf_endButton ();
swf_oncondition
Назначение события
void swf_oncondition (int transition)
Для кнопок TYPE_MENUBUTTON возможны параметры:
IdletoOverUp;
OverUptoIdle;
OverllptoOverDown;
OverDowntoOverUp;
IdletoOverDown;
OutDowntoIdle;
MenuEnter (Id!etoOverl)p| IdletoOverDown):
MenuExit (OverUptoIdlejOverDowntoIdle).
Для кнопок TYPE_PUSHBUTTON возможны параметры:
IdletoOverllp;
OverUptoIdle;
OverUptoOverDown;
OverDowntoOverUp;
OverDowntoOutDown;
OutDowntoOverDown;
OutDowntoIdle;
ButtonEnter (IdletoOverUp|OutDowntoOverDown);
ButtonExit (OverUptoIdle]OverDowntoOutDown).
swf_endbutton
Завершение определения текущей кнопки
void swf_endbutton (void);
swf_viewport
Выбор области для.последующего рисования
void swf_viewport (double xmin. double xmax. double ymin, double ymax)
swf_ortho
Выбор объемной системы координат текущей области рисования
void swf_ortho (double xmin. double xmax. double ymin, double ymax. double zmin. double zmax)
swf_ortho2
Выбор плоской системы координат текущей области рисования
2void swf_ortho2 (double xmin, double xmax, double ymin. double ymax)
Для преобразований перспективы может использоваться функция swf_ perspective().
swf_perspective
Определение трансформации перспективы проекции
void swf_perspective (double fovy. double aspect, double near, double far)
Аргумент fovy задает угол зрения по отношению к оси у, aspect - масштаб текущей области рисования. Аргументы near,far определяют границы проекции - ближнюю и дальнюю. Поскольку flash-проигрыватели имеют только двумерную матрицу, возможны искажения проецирования.
swf_polarview
Установка позиции наблюдения в полярных координатах
void swf_polarview(double dist, double azimuth, double Incidence, double twist)
dist задает расстояние от наблюдателя до начала системы координат; azimuth - угол азимута в плоскости х,у, измеренный от оси у; incidence - угол обзора в плоскости y,z, измеренный относительно оси z; twist - вращение видимой области относительно линии наблюдения (по правилу правой руки).
swf_lookat
Установка трансформации наблюдения
void swfjookat (double view_x, double view_y. double view_z, double reference_x, double reference_y, double reference_z, double twist)
Аргументами view_x, view_y, view_z задается позиция наблюдения; reference_x, reference_y, reference_z указывают наблюдаемую точку; a twi st - угол поворота наблюдения относительно оси z.
swf_pushmatrix
Занесение текущей матрицы трансформации в стек
void swf_pushmatrix (void);
swf_popmatrix
Извлечение матрицы трансформации из стека
void swf_popmatrix (void);
swf_scale
Масштабирование текущей трансформации
void swf_scale (double x. double y, double z)
Масштабные коэффициенты задаются аргументами х, у, z.
swf_trnslate
Транслирование текущей трансформации
void swf_translate (double x, double y, double z)
swf_rotate
Поворот текущей трансформации
void swf_rotate (double angle, string axis)
Угол поворота angle задается относительно оси axis. Допустимые значения axis: "x", "у" и "z".
swf_posround
Разрешение или запрет округления координат объектов
void swf_posround (int round)
Значение 1 разрешает, а 0 запрещает округление.