Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ООАП.doc
Скачиваний:
9
Добавлен:
01.05.2025
Размер:
1.01 Mб
Скачать

Структура программы на языке Ruby

> ruby \\ вызываем командную строку компилятора

include Math \\ подключаем библиотеку для вычисления математических операций

a=1//задаем переменные

b=2

c=3

d=4

x=a+b \\ записываем условия выражения с присваиванием новых значений

y=c+d

z=x+y

puts z \\ выводим результат

^Z \\ заканчиваем программу этим символом

Экзаменационный вопрос № 27 История создания Action Script

Всё началось в 1993 году...

Джонатан Гай (Jonathan Gay) разработал программу, которое позволяло вводить информацию в компьютер, используя электронное перо вместо клавиатуры.

Назвал он это - SmartSketch.

В то время это было огромным достижением, однако программа не получила желаемой популярности и в связи с этим в 1995 году SmartSketch был переделан в программу для анимации.

В эти года рынок анимации был мизерным, анимационные ролики могли распространяться только на видеокассетах или компакт-дисках. В тоже время Джонатан заинтересовался интернетом и веб-дизайном и сделал ставку на то, что в скором времени интернет станет популярным и с его помощью люди начнут обмениваться анимацией и графикой.

И так новорождённую программу назвали FutureSplash Animator и попытались продать её очень известной компании Adobe, но сделка так и не состоялась. К FutureSplash был проявлен интерес только тогда, когда он был использован такими компаниями как Microsoft и Disney Online.

После чего в ноябре 1996 года команда Джонатана Гай`я присоединилась к компании Macromedia, в результате чего FutureSplash получил новое название «Macromedia Flash 1.0».

С выпуском 4 версии программы, во Flash появляется более-менее приемлемый скриптовый язык (ActionScript) и начинают появлятся первые сайты сделанные целиком во Flash.

С появлением 5 и 6 версий ActionScript становится всё мощнее и именно в это время начинается повсеместное применение flash в веб-дизайне.

С появлением в свет 7 версии Macromedia Flash, ActionScript переростает во вторую версию и теперь становится Объектно-ориентированным.

В 2005 году выходит долгожданная 8 версия Flash. Появляются новые возможности, такие как: создание фильтров (подобных фильтрам Photoshop), которые можно применять даже программно, что очень важно, появляются новые возможности работы со шрифтами и многое другое.

Тогда же в 2005 компанию Macromedia покупает Adobe за 3.5 млрд. долларов и с этого момента программа называется Adobe Flash.

Потом появляется Flash Professional 9 ActionScript 3.0 с принципиально новым AS 3.0. История пишется дальше...

Основные элементы языка ActionScript

Арифметические Операторы:

Умножение c * d

Деление c / d

Остаток c % d

Сложение c + d

Вычитание c - d

Операторы Сравнения:

Меньше чем c < d

Больше чем c > d

Меньше или равно c < =d

Больше или равно c > = d

Равно c == d

Не равно c != d

Побитовое И c &d

Побитовое исключающее ИЛИ c^d

Побитовое ИЛИ c | d

Логическое И c && d

Логическое ИЛИ c || d

Проверяется тип данных as

Проверяются свойства объекта in

Оператор выбора (условный оператор)

?: это экспресс-метод применения инструкции условного выбора if..else

инструкция if..else

Инструкция условия if..else позволяет проверить условие и выполнить блок программного кода, если это условие соблюдено, либо выполнить другой программный код, если условие нарушено. Например, в следующем программном коде проверяется, превышает ли x значение 20, создается функция trace(), если условие выполняется, или создается другая функция trace(), если это не так.

if (x > 20) { trace("x is > 20"); }

else { trace("x is <= 20"); }

Если не требуется выполнять альтернативный блок программного кода, можно использовать инструкцию if без инструкции else.

инструкция if..else if

Можно проверить больше одного условия, используя инструкцию условия if..else if. Например, в следующем программном коде не только проверяется, превышает ли x значение 20, но также проверяется, не является ли значение x отрицательным.

if (x > 20) { trace("x is > 20"); }

else if (x < 0) { trace("x is negative"); }

Оператор ветвления

switch

Инструкция switch полезна, если имеется несколько путей выполнения, которые зависят от одного выражения условия. При этом обеспечивается функциональность, сходная с несколькими последовательными инструкциями if..else if, но несколько более удобочитаемая. Вместо проверки условия для логического значения инструкция switch оценивает выражение и использует результат для определения того, какой блок программного кода следует выполнять. Блоки кода начинаются инструкциями case и заканчиваются инструкциями break. Например, в следующей инструкции switch печатается день недели, на основе номера дня, возвращаемого методом Date.getDay().

var someDate:Date = new Date();

var dayNum:uint = someDate.getDay();

switch(dayNum)

{ case 0: trace("Sunday"); break;

case 1: trace("Monday"); break;

case 2: trace("Tuesday"); break;

case 3: trace("Wednesday"); break;

case 4: trace("Thursday"); break;

case 5: trace("Friday"); break;

case 6: trace("Saturday"); break;

default: trace("Out of range"); break;

}

Циклы

for

Инструкция цикла for позволяет итеративно увеличивать переменную в определенном диапазоне значений. Необходимо передать в инструкцию for три выражения: переменную, установленную в качестве исходного значения; инструкцию условия, определяющую окончание цикла; а также выражение, которое изменяет значение переменной для каждого цикла. Например, в следующем программном коде цикл выполняется пять раз. Значение переменной i начинается с 0 и заканчивается 4, выходным значением будут числа от 0 до 4, каждое в своей строке.

var i:int;

for (i = 0; i < 5; i++)

{ trace(i); }

for..in

Инструкция цикла for..in выполняет итерации для свойства объекта или элементов массива. Например, можно использовать инструкцию цикла for..in для выполнения итераций со значениями свойства родового объекта (свойства объекта не сохраняются в определенном порядке, поэтому свойства могут появляться в кажущемся произвольном порядке).

var myObj:Object = {x:20, y:30};

for (var i:String in myObj)

{ trace(i + ": " + myObj[i]); }

// output:

// x: 20

// y: 30

Nакже можно выполнять итерацию по элементам массива.

var myArray:Array = ["one", "two", "three"];

for (var i:String in myArray)

{ trace(myArray[i]); }

// output:

// one

// two

// three

Чего нельзя делать, так это выполнять итерацию по свойствам объекта, если он является экземпляром определенного пользователем класса, если этот класс не является динамическим классом. Но даже с экземпляром динамического класса можно выполнять итерации только по свойствам, которые добавляются динамически.

for each..in

Инструкция цикла for each..in выполняет итерации по элементам коллекции, которые могут быть либо тэгами в объекте XML или XMLList, либо значениям, содержащимся в свойствах объекта, а также элементами массива. Например, как показывает следующая выборка, можно использовать цикл for each..in для итерации по свойствам родового объекта, но в отличие от цикла for..in, переменная-итератор в цикле for each..in содержит значение свойства вместо имени свойства.

var myObj:Object = {x:20, y:30};

for each (var num in myObj)

{ trace(num); }

// output:

// 20

// 30

Можно выполнять итерации по объектам XML или XMLList, как показано в следующем примере.

var myXML:XML = <users>

<fname>Jane</fname>

<fname>Susan</fname>

<fname>John</fname>

</users>;

for each (var item in myXML.fname)

{ trace(item); }

/* output

Jane

Susan

John

*/

Также можно выполнять итерации по элементам массива, как в следующем примере.

var myArray:Array = ["one", "two", "three"];

for each (var item in myArray)

{ trace(item); }

// output:

// one

// two

// three

Нельзя выполнять итерацию по свойствам объекта, если он является экземпляром запечатанного класса. Даже для экземпляров динамических классов нельзя выполнять итерации по каким-либо фиксированным свойствам, какими являются свойства, определенные как часть определения класса.

While

Цикл while работает аналогично инструкции if, выполняя повторения до тех пор, пока для условия выдается значение true. Например, в следующем программном коде получаются такие же результаты, что и в примере с циклом for.

var i:int = 0;

while (i < 5)

{ trace(i); i++; }

Одним из недостатков использования цикла while вместо цикла for является то, что неопределенные циклы проще писать с помощью циклов while. Пример программного кода с циклом for не компилируется, если пропущено выражение, которое инкрементально увеличивает переменную обратного счетчика, но цикл while не компилируется, если пропущен этот шаг. Без выражения, инкрементально увеличивающего переменную i, цикл становится неопределенным циклом.

do..while

Цикл do..while является циклом while, в котором гарантируется, что блок кода будет выполнен хотя бы один раз, поскольку условие проверяется после выполнения блока программного кода. В следующем программном коде показан простой пример цикла do..while, создающего выходные данные даже в случае несоблюдения условия.

var i:int = 5;

do { trace(i); i++; }

while (i < 5);

// output: 5

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

Каждый объект в языке имеет следующие свойства:

Свойства объектов ECMAScript

Название

Краткое описание

constructor

Функция, использованная для создания объекта (в примерах выше это Object())

hasOwnProperty(propertyName)

Показывает, существует ли данное свойство в объекте (не в его прототипе)

isPrototypeOf(object)

Определяет, находится ли объект в цепи прототипов объекта-аргумента

propertyIsEnumerable(propertyName)

Показывает, является ли свойство с данным названием перечислимым в цикле for-in

toString()

Возвращает представление объекта в виде строки

valueOf()

Возвращает значение this. Если же объект является результатом вызова конструктора объекта расширения, значение valueOf() зависит от реализации[Спецификация 2]. Зачастую в качестве возвращаемого значения выступает значение примитивного типа, соответствующее объекту. Как правило, результат данного метода совпадает с результатом toString(). Объекты, созданные с помощью конструктора Date() — яркий пример, где результатыtoString() и valueOf() не совпадают[39].

Список зарезервированных слов ActionScript:

break

extends

instanceof

static

case

for

interface

switch

class

function

intrinsic

this

continue

get

new

typeof

default

if

private

var

delete

implements

public

void

dynamic

import

return

while

else

in

set

with

Объектно-ориентированное программирование

Определения классов

В ActionScript 3.0 определения классов используют синтаксис, подобный тому, который использовался для определения классов в ActionScript 2.0. Правильный синтаксис для определения класса вызывает ключевое слово class, за которым следует имя класса. Тело класса, заключенное в фигурные скобки ({}), идет после имени класса. Например, следующий код создает класс с именем Shape, содержащий одну переменную visible.

public class Shape

{ var visible:Boolean = true; }

Одно значительное изменение в синтаксисе затрагивает определения классов, находящиеся внутри пакета. В ActionScript 2.0, если класс находится в пакете, имя пакета должно быть включено в объявление класса. В языке ActionScript 3.0, в котором вводится инструкция package, имя пакета должно быть включено в объявление пакета, а не в объявление класса. Например, следующие объявления классов показывают, как класс BitmapData, включенный в пакет flash.display, определяется в ActionScript 2.0 и ActionScript 3.0.

// ActionScript 3.0

package flash.display

{ public class BitmapData {} }

Атрибуты классов

ActionScript 3.0 позволяет изменять определения классов с помощью одного из четырех атрибутов.

Dynamic Позволяет добавлять свойства для экземпляров во время выполнения.

Final Не должен расширяться другим классом.

internal (по умолчанию) Видимый для ссылок внутри текущего пакета.

Public Видимый для всех ссылок.

\