Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Округление до целого числа. Определение размеров рабочей области. Задание 1. Округление до целого числа .  Преобразование строк в идентификаторы. Функция eval()




Округление до целого числа

Многие свойства, параметры и характеристики выражаются целыми числами. Для округления до целых в ActionScript имеются три метода.

Метод Math. round() проводит округление до ближайшего целого. Если дробная часть числа больше или равна 0. 5, то округление проводится в сторону увеличения (для отрицательных чисел – увеличения абсолютной величины):

trace(Math. round(1. 5)); // Выводит: 2

trace(Math. round(3. 6)); // Выводит: 4

trace(Math. round(3. 4)); // Выводит: 3

trace(Math. round(-1. 5)); // Выводит: -1

trace(Math. round(-3. 6)); // Выводит: -4

trace(Math. round(-3. 4)); // Выводит: -3

Метод Math. floor() округляет число до наименьшей ближайшей целой величины.

Например:

trace(Math. floor(2. 99999999));    // Выводит: 2

trace(Math. floor(-2. 99999999)); // Выводит: -3

                           //(-3 меньше, чем -2. 99999999)

Метод Math. ceil() противоположен методу Math. floor(). Он возвращает ближайшее целое число, большее данного:

trace(Math. ceil(2. 99999999)); // Выводит: 3

trace(Math. ceil(-2. 99999999)); // Выводит: -2

Довольно часто возникает необходимость проводить округление не до целых, а до некоторого десятичного разряда. Однако метода, который позволял бы решать эту задачу, в ActionScript нет. Но при необходимости его можно создать.

Так, чтобы округлить число до n десятичных знаков, его нужно умножить на 10n, провести операцию округления, а затем поделить на 10n результат. Например:

function n_round(number, n) {

var f = Math. pow(10, n);

return Math. round(number*f)/f;

}

trace(n_round(10. 19876784, 3)); // Выводит: 10. 199

Определение размеров рабочей области.

Каждый кадр имеет некоторое содержание, которое показано на графическом холсте, названном Stage.

Свойства _width и _height присущи и основной временной диаграмме _root. Причем их значения для _root определяются точно по таким же принципам, как и для обычных клипов. Распространенной ошибкой является попытка определить размер поля фильма как высоту и ширину _root.

Чтобы правильно решить эту задачу, нужно воспользоваться свойствами width и height объекта Stage (записываются без символа подчеркивания! ):

trace([_root. _height, _root. _width]); // 0, 0, если _root  пустой

 trace([Stage. height, Stage. width ]);  

// 400 550 —  размер рабочей области

Задание 1

1. Создать новый Flash-документ.

2. Создать в нем слои Actions и Clip.

3. Создать символ MovieClip в виде квадрата 60х60.

4. Разместить экземпляр созданного символа в единственном кадре слоя Clip. При нажатии экземпляра он должен " убегать" в случайном направлении на случайное расстояние из диапазона 60-120 по каждой из осей. Квадрат не должен убегать за пределы рабочей области.

Задание 2

Создать поле для игры в крестики нолики

1. Создать новый Flash-документ с двумя слоями: Actions и Game.

2. Каждая отдельная клетки поля для игры представляет квадрат, имеющий три состояния: пусто, крестик и нолик. Создать символ MovieClip с тремя соответствующими кадрами. Дать символу имя cell.

3. В центре рабочей области слоя Game разместить 9 экземпляров клетки.

 

 

4. Протестировать флеш.

Задание 3

1. В каждой клетке поля игры непрерывно меняются кадры. Необходимо остановить проигрывание анимации у клипов-клеток методом stop().

Для программного управления дать клеткам следующие имена c00, c01, c02, c10 и т. д. Индексы состоят из номеров строки и столбца клетки.

 Преобразование строк в идентификаторы. Функция eval()

Функция eval() позволяет динамически преобразовывать строки в идентификаторы объектов, клипов и функций.

row=1; col=2;

eval(" c" +row+col+" _mc" ). _x=100; // c12_mc. _x=100;

Довольно часто имена объектов используются как строки. Методы программного создания клипов требуют указания их имени в качестве строки (хотя они и возвращают ссылку на созданный объект).

for (var i = 0; i< 100; i++) 

_root. attachMovie(" ball", " ball" +i, i);

 В подобных случаях часто используется функция eval(). Чтобы остановить проигрывание i-го клипа, надо записать

eval(" ball" +i). stop();

 Если необходимо динамически создать идентификатор вложенного клипа, то его полный адрес должен быть получен в скобках функции eval(). Частой ошибкой является ее использование в качестве метода, например:

big_ball. eval(" ball" +n). _x=100; // Нельзя

Чтобы получить доступ к расположенному на временной диаграмме клипа big_ball клипу balln, нужно набрать следующий код:

eval(" big_ball. ball" +n). _x=100;

Функция eval() не совместима с оператором присваивания (точнее, выражение с ней не может являться левым операндом оператора " =" ). Для того чтобы создать переменную или свойство с динамически формируемым именем, нужно использовать функцию set() или оператор []:

eval(" per" +i)=" ActionScript"; //Ошибка

set(" per" +i, " ActionScrip " ); //Правильно, но устарело

this[" per" +i]=" ActionScrip"; //Оптимально

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...