
Можно открыть зашифрованный файл, используя функцию
openEncryptedFile Символьная_строка Целое_число
Символьная строка задает имя файла, число – ключ шифровки. О том, как создаются зашифрованные файлы, речь еще впереди.
Свойства
Свойств у файловых потоков нет.
Методы
Для чтения данных из файлового потока предусмотрен целый ряд функций.
readLine Файловый_поток
читает и возвращает очередную строку из файлового потока.
readChar Файловый_поток
читает из файлового потока очередной символ и возвращает его в виде символьной строки.
readChars Файловый_поток Число
читает из указанного файлового потока количество символов, указанное вторым параметром.
readDelimitedString Файловый_поток Символьная_строка
читает символы из файлового потока до тех пор, пока не встретит указанную вторым параметром строку или конец файла.
skipToString Файловый_поток Символьная_строка
просматривает файл до тех пор, пока не встретит символьную строку, заданную вторым параметром и позиционирует указатель чтения/записи за ней. Если строка в файле не встретилась, возвращает undefined.
skipToNextLine Файловый_поток
позиционирует указатель чтения/записи на начало следующей строки.
filePos Файловый_поток
возвращает текущую позицию указателя чтения/записи.
seek Файловый_поток Число
устанавливает указатель чтения/записи в позицию, указанную вторым параметром.
eof Файловый_поток
возвращает true, если достигнут конец файла, в противном случае false.
flush Файловый_поток
записывает все данные, содержащиеся в буфере, на диск.
close Файловый_поток
записывает все данные, содержащиеся в буфере, на диск и закрывает файл.
readValue Файловый_поток
читает и возвращает значение операнда из текстового файла.
readExpr Файловый_поток
читает и выполняет выражение из текстового файла.
execute Файловый_поток
читает и выполняет все выражения, содержащиеся в текстовом файле, начиная с текущей позиции.
Разница между readValue и readExpr иллюстрируется следующим примером. Роль файлового потока для простоты будет играть строковый
s = stringstream “random 0.0 1.0; random red blue”
readValue s
readValue s
seek s 0
readExpr s
readExpr s
seek s 0
execute s
Результаты выполнения
random ( ) читается и возвращается название функции
random
читается и возвращается ноль
OK результат выполнения функции seek
0.494995 читается и выполняется выражение
random 0.0 1.0
(color 94.1571 0 25.2922) читается и выполняется выражение
random red blue
OK результат выполнения функции seek
(color 39.3391 0 137.636) читается и выполняется весь поток,
возвращается результат последнего выражения
Для вывода в файловый поток применяются функции print и format. Файловый поток при этом указывается именованным параметром to. Например
s = createFile “MyFile.txt”
str = “MyString”
print str to:s
close s
Строковый поток
Строковый поток полностью аналогичен файловому, с той лишь разницей, что он размещается не на диске, а в памяти. Кроме того, строковый поток легко может быть преобразован в обычную символьную строку с помощью оператора преобразования типа.
Литералы
Литералы для строкового потока не предусмотрены
Конструкторы
Строковый поток может быть получен следующим образом
StringStream Символьная_строка
Указанная символьная строка сразу помещается в созданный символьный поток, указатель чтения/записи получает значение 0. Можно получить тот же результат, преобразовав существующую символьную строку в строковый поток.
Символьная_строка as StringStream
Операторы
Стандартные операции сравнения, равенство и неравенство, для строковых потоков определены, но практического смысла не имеют. С помощью операции преобразования типа легко получить символьную строку, содержащуюся в потоке.
Строковый_поток as string
Более ни к каким типам строковый поток не преобразуется.
Методы
Функция копирования позволяет получить новый экземпляр имеющегося потока
copy Строковый_поток
Вывод в строковый поток осуществляется с помощью стандартных функций print и format с указанием потока в именованном параметре to. Например
ss = StringStream “”
print “Testing stringstream out” to:ss
Остальные функции для работы со строковыми потоками полностью идентичны функциям для работы с файловыми.
readValue Строковый_поток
readExpr Строковый_поток
readLine Строковый_поток
readChar Строковый_поток
readChars Строковый_поток Число
readDelimitedString Строковый_поток Символьная_строка
skipToString Строковый_поток Символьная_строка
skipToNextLine Строковый_поток
execute Строковый_поток
filePos Строковый_поток
seek Строковый_поток Число
eof Строковый_поток
close Строковый_поток
flush Строковый_поток
Функции close и flush не производят никаких действий со строковыми потоками и оставлены только для совместимости строковых и файловых потоков.
Оконный поток
Оконный поток предоставляет возможность для вывода данных в окно редактирования скриптов. Эти данные затем можно отредактировать и сохранить вручную. Оконный поток поддерживает только вывод, ввод из него невозможен.
Литералы
Литералов для оконных потоков не предусмотрено.
Конструкторы
Оконный поток может быть создан только одним способом. Функция
NewScript
создает и открывает пустое окно редактирование скрипта и возвращает оконный поток, который может быть использован для вывода данных. Например
debugw = newScript ( )
print “Testing WindowStream out” to:debugw
Свойства
Свойств оконный поток не имеет
Методы
Для работы с оконным потоком используются только стандартные функции вывода print и format. При этом поток указывается в именованном параметре to. При использовании функции format не забывайте о необходимости самостоятельно добавлять символ “\n” там, где нужен переход на новую строку.
Ключи анимации
Свойства и методы ключей анимации
Конструкторы
Создать новый ключ анимации можно с помощью функции
addNewKey Контроллер Время #select
Первый параметр – контроллер, для которого создается ключ, второй – время в котором ключ будет создан. Параметр #select необязателен, но если он задан, то созданный ключ автоматически будет выделен. В руководстве данная функция описана в двух местах по разному. В одном из описаний упоминается параметр #interpolate, который надо задать, чтобы значение для ключа, созданного между двух других, интерполировалось по времени. Во втором описании интерполяция присутствует обязательно. Результаты эксперимента свидетельствуют в пользу верности второго описания.
Получить ссылку на существующий для некого контроллера ключ можно двумя способами
getKey Контроллер Число
Первый параметр – контроллер, для которого запрашивается ключ, второй – порядковый номер ключа. Второй способ предусматривает обращение к свойству .keys анимированного свойства объекта или соответствующего контроллера. Предположим, что у нас есть анимация линейного движения объекта $Sphere01. Тогда второй ключ этой анимации можно получить так
$Sphere01.position.keys[2]
или так
$Sphere01.position.controller.keys[2]