Перечислим все параметры тега <applet>. Обязательные параметры:
code — URL-адрес файла с классом апплета или архивного файла;
width и height — ширина и высота апплета в пикселах.
Необязательные параметры:
codebase — URL-адрес каталога, в котором расположен файл класса апплета. Если этот параметр отсутствует, браузер будет искать файл в том же каталоге, где размещен соответствующий HTML-файл;
archive — файлы всех классов, составляющих апплет, могут быть упакованы архиватором ZIP или специальным архиватором JAR в один или несколько архивных файлов. Параметр задает URL-адреса этих файлов через запятую;
align — выравнивание апплета в окне браузера. Этот параметр имеет одно из следующих значений:ABSBOTTOM, ABSMIDDLE, BASELINE, BOTTOM, CENTER, LEFT, MIDDLE, RIGHT, TEXTTOP, TOP;
hspace и vspace — горизонтальные и вертикальные поля, отделяющие апплет от других объектов в окне браузера в пикселах;
download — задает порядок загрузки изображений апплетом. Имена изображений перечисляются через запятую в порядке загрузки;
name — имя апплета. Параметр нужен, если загружаются несколько ап-плетов с одинаковыми значениями code и codebase;
style — информация о стиле CSS (Cascading Style Sheet); title — текст, отображаемый в процессе выполнения апплета;
alt — текст, выводимый вместо апплета, если браузер не может загрузить его;
mayscript — не имеет значения. Это слово указывает на то, что апплет будет обращаться к тексту JavaScript.
Между тегами <applet> и </applet> можно написать текст, который будет выведен, если браузер не сможет понять тег <applet>.
Методы апплета
Метод getCodeBase () возвращает URL-адрес каталога, в котором лежит файл класса апплета.
Метод getoocumentBase () возвращает URL-адрес каталога, в котором лежит HTML-файл, вызвавший апплет.
Браузер реализует интерфейс Appletcontext, находящийся в пакете java.applet. Апплет может получить ссылку на этот интерфейс методом getAppletContext().
С помощью методов getApplet (String name) и getApplets() интерфейса Appletcontext можно получить ссылку на указанный аргументом name апплет или на все апплеты, загруженные в браузер.
Метод showDocument(URL address) загружает в браузер HTML-файл с адреса address.
Метод showDocument (URL address, String target) загружает файл во фрейм, указанный вторым аргументом target. Этот аргумент может принимать следующие значения:
_seif — то же окно и тот же фрейм, в котором работает апплет;
_parent — родительский фрейм апплета;
_top — фрейм верхнего уровня окна апплета;
_biank — новое окно верхнего уровня;
name — фрейм или окно с именем name, если оно не существует, то будет создано.
80.
Java 3D что такое ? Пример использования.Scenegraph (Граф сцены) - расположение 3-хмерных объектов в древовидной структуре, которое полностью определяет содержимое виртуальной вселенной, а также то как вселенная должна быть отренедрена (rendered)Иерархия классов Java3D - коллекция объектов, описывающих отображаемую виртуальную вселенную.
javax.media.j3dpackage - вAPIопределено более 100 классов в пакете
Их часто называют Java3Dcoreclasses.
Для простых сцен достаточно десятка объектов.
Помимо пакета Java3Dcore, часто используются и другие.
com.sun.j3d.utils package – егочастоназываютJava3D utility classes. Сoreclasspackageвключаетв себя лишь низкоуровневые классы, необходимые для программирования на Java3D. Utilityclasses– удобные и мощные классы, в добавление к основным.
4 основныхкатегории utility classes: content loaders, scene graph construction aids, geometry classes, and convenience utilities.
java.awtpackage
javax.vecmath package
visualobject– объект графа сцены (например, куб или сфера)
object– экземпляр класса
content – в целом объекты графа сцены
Виртуальная вселенная создается из графа сцены.
Узел – элемент данных (экземпляр класса из Java3D). Дуга – отношение между элементами.
Авторы Java3DAPIРекомендуют следующий алгоритм созданияпрограмм на Java3D
1. Создать Canvas3D (наследник Canvas из AWT)
2. Создать VirtualUniverse
3. Создать Locale и присоединить к VirtualUniverse
4. Создать view branch graph
a. View
b. ViewPlatform
c. PhysicalBody
d. PhysicalEnvironment
e. ПрисоединитьобъектыViewPlatform, PhysicalBody, PhysicalEnvironment, Canvas3D к View
5. Создать content branch graph(s)
6. Скомпилировать branchgraph(s)
7. Присоединить полученные подграфы к Locale
Зачастую программы на Java3D имеют одинаковую систему viewbranchgraph. Ввиду этого используют класс SimpleUniverse
81.
Работа с изображениями и звуком в Java.Интерфейс imageConsumer нет нужды реализовывать, обычно используется его готовая реализация — класс imageFilter. Несмотря на название, этот класс не производит никакой фильтрации, он передает изображение без изменений. Для преобразования изображений данный класс следует расширить, переопределив метод setPixeiso. Результат преобразования следует передать потребителю, роль которого играет поле consumer этого класса.В пакете java. awt. image есть четыре расширения класса ImageFilter:
CropImageFilter (int x, int у, int w, int h) — выделяет фрагмент изображения, указанный в приведенном конструкторе;
RGBimageFilter — позволяет изменять отдельные пикселы; это абстрактный класс, он требует расширения и переопределения своего метода filterRGBO;
RepдicateScaieFilter (int w, int h) — изменяет размеры изображения на указанные в приведенном конструкторе, дублируя строки и/или столбцы при увеличении размеров или убирая некоторые из них при уменьшении;
AreaAveragingScaleFilter (int w, int h) — расширение предыдущего класса; использует более сложный алгоритм изменения размеров изображения, усредняющий значения соседних пикселов.
Применяются эти классы совместно со вторым классом-поставщиком, реализующим интерфейс ImageProducer — классом FilteredlmageSource. Этот класс преобразует уже готовую продукцию, полученную от другого поставщика producer, используя для преобразования объект filter класса-фильтра imageFilter или его подкласса, Оба объекта задаются в конструктореFilteredlmageSource(ImageProducer producer, ImageFilter filter)Все это кажется очень запутанным, но схема применения фильтров всегда одна и та же.Чтобы изменить отдельные составляющие цвета, надо прежде всего посмотреть тип хранения элементов в Bufferedimage, по умолчанию это TYPE_INT_RGB. Здесь три составляющие — красная, зеленая и синяя. Каждая составляющая цвета занимает один байт, все они хранятся в одном числе типа int. Затем надо составить таблицу новых значений составляющих. Потом заполняем данный массив нужными значениями составляющих каждого цветаПо полученной таблице создаем экземпляр класса ByteLookupTabie, который свяжет эту таблицу с буфером данных. Этот экземпляр используем для создания объекта класса LookupOp. Наконец, применяем метод filter () этого класса.Звук. Как было указано в предыдущей главе, в апплетах реализуется интерфейс Audioclip. Экземпляр объекта, реализующего этот интерфейс можно получить методом getAudioClip(), который, кроме того, загружает звуковой файл, а затем пользоваться методами play о, loop о и stop о этого интерфейса для проигрывания музыки.Для применения данного же приема в приложениях в класс Applet введен статический метод newAudioclp(URL address), загружающий звуковой файл, находящийся по адресу address, и возвращающий объект, реализующий интерфейс Audioclip. Его можно использовать для проигрывания звука в приложении, если конечно звуковая система компьютера уже настроена.Проигрывание звука в Java 2. Проигрыватель звука, встроенный в JVM, рассчитан на два способа записи звука: моно и стерео оцифровку (digital audio) с частотой дискретизации (sample rate) от 8 000 до 48 000 Гц и аппроксимацией (quantization) 8 и 16 битов, и MIDI-последовательности (sequences) типа 0 и 1.
Оцифрованный звук должен храниться в файлах типа AU, WAVE и AIFF. Его можно проигрывать двумя способами.
Первый способ описан в интерфейсе clip. Он рассчитан на воспроизведение небольших файлов или неоднократное проигрывание файла и заключается в том, что весь файл целиком загружается в оперативную память, а затем проигрывается.
Второй способ описан в интерфейсе SourceDataLine. Согласно этому способу файл загружается в оперативную память по частям в буфер, размер которого можно задать произвольно.
Перед загрузкой файла надо задать формат записи звука в объекте класса AudioFormat. Конструктор этого класса:
AudioFormat(float sampleRate, int sampleSize, int channels, boolean signed, boolean bigEndian)
Управлять проигрыванием файла можно с помощью событий. Событие класса LineEvent происходит при открытии, OPEN, и закрытии, CLOSE, потока, при начале, START, и окончании, STOP, проигрывания. Характер события отмечается указанными константами. Соответствующий интерфейс LineListener описывает только один метод update ().
В MIDI-файлах хранится последовательность (sequence) команд для секвен-сора (sequencer) — устройства для записи, проигрывания и редактирования MlDI-последовательности, которым может быть физическое устройство или программа. Последовательность состоит из нескольких дорожек (tracks), на которых записаны MIDI-события (events). Каждая дорожка загружается в своем канале (channel). Обычно дорожка содержит звучание одного музыкального инструмента или запись голоса одного исполнителя или запись нескольких исполнителей, микшированную синтезатором (synthesizer).