Округление до целого числа. Определение размеров рабочей области. Задание 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|