Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //Циферблат массив
- var NumbersArr:Array=[12,1,2,3,4,5,6,7,8,9,10,11];
- //Массив для текстовых полей циферблата
- var numbersTxts:Array=[0];
- //Фон
- var container:Sprite = new Sprite();
- //Циферблат
- var containerNumb:Sprite = new Sprite();
- //Стрелки
- var second:Sprite = new Sprite();
- var minutes:Sprite = new Sprite();
- var hours:Sprite = new Sprite();
- second.graphics.lineStyle(1, 0x000000);
- second.graphics.lineTo(0, -80);
- minutes.graphics.lineStyle(2, 0x000000);
- minutes.graphics.lineTo(0, -70);
- hours.graphics.lineStyle(4, 0x000000);
- hours.graphics.lineTo(0, -50);
- container.x=90;
- container.y=100;
- container.graphics.beginFill(0x999999);
- container.graphics.drawCircle(0, 0, 90);
- addChild(container);
- container.addChild(second);
- container.addChild(minutes);
- container.addChild(hours);
- container.addChild(containerNumb);
- containerNumb.y=-75+5;
- containerNumb.x=-5;
- //Создаем текстовые поля
- var i:int=0;
- while (i < NumbersArr.length) {
- var txt:TextField = new TextField();
- txt.text=NumbersArr[i];
- txt.width=15;
- txt.height=20;
- containerNumb.addChild(txt);
- numbersTxts[i]=txt;
- i++;
- }
- //Положения цифр на циферблате
- numbersTxts[1].x=15+10+10;
- numbersTxts[2].x=30+20+10;
- numbersTxts[3].x=45+30;
- numbersTxts[4].x=30+20+10;
- numbersTxts[5].x=15+10+10;
- numbersTxts[6].x=0;
- numbersTxts[7].x=-15-10-10;
- numbersTxts[8].x=-30-20-10;
- numbersTxts[9].x=-45-30;
- numbersTxts[10].x=-30-20-10;
- numbersTxts[11].x=-15-10-10;
- numbersTxts[0].y=-10;
- numbersTxts[1].y=10-5;
- numbersTxts[2].y=30-5;
- numbersTxts[3].y=60;
- numbersTxts[4].y=90+5;
- numbersTxts[5].y=110+5;
- numbersTxts[6].y=120+5;
- numbersTxts[7].y=100+10+5;
- numbersTxts[8].y=80+10+5;
- numbersTxts[9].y=60;
- numbersTxts[10].y=40-10-5;
- numbersTxts[11].y=20-10-5;
- //Разворачиваем стрелки относительно времени
- var my_date:Date = new Date();
- second.rotation=my_date.seconds*6;
- minutes.rotation=my_date.minutes*6;
- hours.rotation=my_date.hours*30;
- stage.addEventListener(Event.ENTER_FRAME, ef);
- function ef(e:Event):void {
- var my_date:Date = new Date();
- second.rotation=my_date.seconds*6;
- minutes.rotation = (my_date.minutes+my_date.seconds/100)*6;
- hours.rotation = (my_date.hours+my_date.minutes/100+my_date.seconds/10000)*30;
- }
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //Устанавливаем начальный угол
- var angle:Number = 0;
- //Устанавливаем скорость вращения
- var speed:Number = 0.2;
- //Устанавливаем радиус круга
- var radius:Number = 50;
- /*
- Мы хотим, что бы круг вращался вокруг центра сцены.
- Мы определим координаты центра сейчас, что бы не высчитывать их каждый кадр
- */
- var centerX:Number = stage.stageWidth / 2;
- var centerY:Number = stage.stageHeight / 2;
- //Добавляем ENTER_FRAME символу,что бы анимировать его
- ball.addEventListener (Event.ENTER_FRAME, moveBall);
- //Используем таймер, что бы добавлять новый след каждую 0.1 секунду
- var timer:Timer = new Timer(100,400000);
- timer.addEventListener (TimerEvent.TIMER, createTrailBall);
- timer.start ();
- //Эта функция отвечает за движение круга
- function moveBall (e:Event):void {
- //Высчитываем новые Х и У координаты
- var xpos:Number = centerX + Math.cos(angle) * radius;
- var ypos:Number = centerY + Math.sin(angle) * radius;
- //Передвигаем окружность на новые координаты
- ball.x = xpos;
- ball.y = ypos;
- //Увеличиваем угол
- angle += speed;
- }
- function createTrailBall (e:Event):void {
- //Создаем новый мяч
- var trailBall:Ball=new Ball();
- //Устанавливаем позицию для следа в то место, где находится круг
- trailBall.x = ball.x;
- trailBall.y = ball.y;
- //Добавляем ENTER_FRAME для анимации хвоста
- trailBall.addEventListener (Event.ENTER_FRAME,animateTrailBall);
- /*
- Добавляем круг хвоста на сцену
- Мы не хотим, что бы след находился над окружностью, поэтому используем метод
- addChildAt .
- */
- addChildAt (trailBall,0);
- }
- function animateTrailBall (e:Event):void {
- //В каждом кадре увеличиваем прозрачность и уменьшаем размеры.
- e.target.alpha -= 0.04;
- e.target.scaleY -= 0.04;
- e.target.scaleX -= 0.04;
- /*
- Если шарик полностью прозрачный, удаляем его со сцены.
- */
- if (e.target.alpha < 0) {
- e.target.removeEventListener (Event.ENTER_FRAME,animateTrailBall);
- removeChild ((MovieClip)(e.target));
- }
- }
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- import flash.events.MouseEvent;
- //останавливаем воспроизведение клипов
- banker1.stop();
- banker2.stop();
- you1.stop();
- you2.stop();
- //////
- startGame_btn.visible = false;// Делаем невидимой кнопку начала игры
- var rate:Number;//объявляем переменную
- var yourMoney:Number = new Number(100);//Переменная, которая содержит все деньги игрока. Начальный капитал 100
- yourMoney_txt.text = String(yourMoney);//Это текстовое поле, которое отображает все деньги игрока.
- rate_txt.text = "";//Делаем поле для ввода ставки пустым
- rate_txt.restrict = "0-9";//Разрешаем ввод в поле для ставки только цифры
- //Добавляем нужные слушатели
- makeRate_btn.addEventListener(MouseEvent.CLICK, checkRate_fun);
- startGame_btn.addEventListener(MouseEvent.CLICK, startGame_fun);
- /////
- //Описываем функцию, котора проверяет ставку
- function checkRate_fun(e:MouseEvent):void
- {
- rate = Number(rate_txt.text);//Передаем в переменную значение текстового поля ставки
- //Проверяем ставку
- if (rate == 0) //если ставка равна 0
- {
- message_txt.text = "Недопустимая ставка";
- }
- else if (rate>yourMoney)//если ставка больше всех средств игрока
- {
- message_txt.text = "Недостаточно средств";
- }
- else if (rate<yourMoney)//если ставка меньше всех средств игрока
- {
- yourMoney = yourMoney - rate;//отнимаем от всех средств ставку
- yourMoney_txt.text = String(yourMoney);//выводим в текстовое поле количество денег игрока
- startGame_btn.visible = true;//делаем кнопку для начала игры видимой
- makeRate_btn.visible = false;//делаем кнопку ставок невидимой
- }
- }
- //Описываем функцию начала игры
- function startGame_fun(e:MouseEvent):void
- {
- startGame_btn.visible=false;//делаем кнопку начала игры невидимой
- makeRate_btn.visible=true;//делаем кнопку ставок невидимой
- //Эти переменные принимают случайное значение от 1 до 6. То есть каждая переменная отвечает за какой-то кубик
- var b_1:Number = Math.round(Math.random() * 5)+1;
- var b_2:Number = Math.round(Math.random() * 5)+1;
- var y_1:Number = Math.round(Math.random() * 5)+1;
- var y_2:Number = Math.round(Math.random() * 5)+1;
- //////
- //Плюсуем значения переменных.
- var B:Number = b_1 + b_2;
- var Y:Number = y_1+y_2;
- //////
- //Переключаем каждый кубик а нужный кадр
- banker1.gotoAndStop(b_1);
- banker2.gotoAndStop(b_2);
- you1.gotoAndStop(y_1);
- you2.gotoAndStop(y_2);
- ////
- //Сравниваем результат игрока и банкира
- if (B>Y)
- {
- message_txt.text = "Вы проиграли";
- }
- else if (B<Y)
- {
- message_txt.text = "Вы выиграли";
- yourMoney=yourMoney+(rate*2);
- yourMoney_txt.text = String(yourMoney);
- }
- else if (B==Y)
- {
- message_txt.text = "Ничья";
- yourMoney=yourMoney+rate;
- yourMoney_txt.text = String(yourMoney);
- }
- }
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //Количество элементов карусели
- const NUMBER_OF_ITEMS:uint = 20;
- //Этот массив содержит все элементы карусели
- var menuItems:Array = new Array();
- //Устанавливаем фокальную длину
- var focalLength:Number = 350;
- //Устанавливаем точку вращения
- var vanishingPointX:Number = stage.stageWidth / 2;
- var vanishingPointY:Number = stage.stageHeight / 2;
- //Высчитываем angleSpeed в слушателе ENTER_FRAME
- var angleSpeed:Number = 0;
- //Радиус окружности
- var radius:Number = 128;
- //Высчитываем разницу угла между элементами карусели (в радианах)
- var angleDifference:Number = Math.PI * (360 / NUMBER_OF_ITEMS) / 180;
- //Этот цикл создает и позиционирует элементы карусели
- for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) {
- //Создаем новый элемент
- var menuItem:MenuItem = new MenuItem();
- //Высчитываем стартовый угол
- var startingAngle:Number = angleDifference * i;
- //Устанавливаем "currentAngle" для элемента
- menuItem.currentAngle = startingAngle;
- //Позиционируем
- menuItem.xpos3D = - radius * Math.cos(menuItem.currentAngle) * 0.5;
- menuItem.ypos3D = radius * Math.sin(startingAngle);
- menuItem.zpos3D = radius * Math.cos(startingAngle);
- //Высчитываем размер для элемента (чем дальше , тем меньше)
- var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
- //Масштабируем элемент, в зависимости от полученных выше результатов
- menuItem.scaleX = menuItem.scaleY = scaleRatio;
- // Позиционируем элемент на сцене
- menuItem.x = vanishingPointX + menuItem.xpos3D * scaleRatio;
- menuItem.y = vanishingPointY + menuItem.ypos3D * scaleRatio;
- //Добавляем прозрачности
- menuItem.alpha = 0.3;
- //Добавляем текст
- menuItem.menuItemText.text = "Menu item " + i;
- //Сделаем так, что бы текст не реагировал на события мыши
- menuItem.mouseChildren = false;
- //Добавим нужные слушатели событий к элементам карусели
- menuItem.addEventListener(MouseEvent.MOUSE_OVER, mouseOverItem);
- menuItem.addEventListener(MouseEvent.MOUSE_OUT, mouseOutItem);
- menuItem.addEventListener(MouseEvent.CLICK, itemClicked);
- //Добавим элемент в массив
- menuItems.push(menuItem);
- //Добавим элемент на сцену
- addChild(menuItem);
- }
- //добавим слушатель события ENTER_FRAME для анимации
- addEventListener(Event.ENTER_FRAME, moveCarousel);
- //Эта функция вызывается в каждом кадре
- function moveCarousel(e:Event):void {
- //Высчитываем скорость поворота в зависимости от координаты мыши Y
- angleSpeed = (mouseY - stage.stageHeight / 2) * 0.0002;
- //Пробежимся циклом по всем элементам карусели
- for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) {
- //Добавим элемент в локальную переменную
- var menuItem:MenuItem = (MenuItem)(menuItems[i]);
- //Обновляем текущий угол элемента
- menuItem.currentAngle += angleSpeed;
- //Высчитываем размер
- var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
- //Масштабируем в зависимости от полученных выше результатов
- menuItem.scaleX=menuItem.scaleY=scaleRatio;
- //Устанавливаем новые 3D координаты
- menuItem.xpos3D=- radius*Math.cos(menuItem.currentAngle)*0.5;
- menuItem.ypos3D=radius*Math.sin(menuItem.currentAngle);
- menuItem.zpos3D=radius*Math.cos(menuItem.currentAngle);
- //Обновляем координаты элементов
- menuItem.x=vanishingPointX+menuItem.xpos3D*scaleRatio;
- menuItem.y=vanishingPointY+menuItem.ypos3D*scaleRatio;
- }
- //Вызываем функцию, которая правильно накладывает элементы друг на друга
- sortZ();
- }
- //Опишем эту функцию
- function sortZ():void {
- //Ищем в массиве элемент, который имеет самую большую координату Z
- menuItems.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);
- //Устанавливаем новый индекс
- for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) {
- setChildIndex(menuItems[i], i);
- }
- }
- //Эта функция вызывается, когда мышь над элементом
- function mouseOverItem(e:Event):void {
- //Делаем объект не прозрачный
- e.target.alpha=1;
- }
- //Эта функция вызывается, когда курсор мыши вне элемента
- function mouseOutItem(e:Event):void {
- //Добавляем прозрачность
- e.target.alpha=0.3;
- }
- //Эта функция вызывается когда вы кликаете мышью по элементу
- function itemClicked(e:Event):void {
- trace("Вы только что кликнули на один из элементов");
- }
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- on(click)
- {
- var number_of_letters = this._parent.ns_1.value;
- //НИЖЕ ИЗ АЛФАВИТА УБРАНЫ i & o, ДАБЫ НЕ БЫЛО НЕДОПОНИМАНИЙ, ЧТО ЭТО ЗА СИМВОЛ
- var LETTER:String = "ABCDEFGHJKLMNPQRSTUVWXYZ";
- var PASSWORD:String = new String("");
- for(var i = 0; i < number_of_letters; i++)
- {
- var random_letter = Math.floor(Math.random()*3);
- if(random_letter == 0)
- {
- //НИЖЕ ИЗ ЧИСЕЛ УБРАН НОЛЬ, ДАБЫ НЕ СПУТАТЬ ЕГО С БУКВОЙ о
- random_letter = 1 + Math.floor(Math.random()* 9);
- } else {
- if(random_letter == 1)
- {
- var random_letter:String = LETTER.charAt(Math.floor(Math.random()*LETTER.length)).toLowerCase();
- } else {
- random_letter = LETTER.charAt(Math.floor(Math.random()*LETTER.length));
- }
- }
- PASSWORD += random_letter;
- }
- this._parent.ta_1.text = PASSWORD;
- }
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- import flash.utils.setTimeout;
- import flash.utils.Timer;
- import flash.geom.Point;
- import flash.events.Event;
- var text_variants:Array = ['1 вариант текста','2 вариант текста','3 вариант текста','4 вариант текста'];
- //варианты значений текстового поля
- var tf_position:Point;
- //Point содержит в себе координаты чего-либо(текстового поля), полезно, т.к. нет необходимости создавать две переменные
- var now_index:Number = -1;
- //последний индекс в массиве вариантов, нужен для защиты от повторения значения
- var effect_power:Number = 1;
- //насколько сильно объект будет "улетать" от своей текущей позиции
- var update_delay:Number = 4;
- //время задержки перед следующим обновлением значения текстового поля в секундах
- initStage();
- function initStage():void
- {//инициализирует сцену
- tf_position = new Point(vibratto_txt.x,vibratto_txt.y);
- //запоминаем текущие координаты
- stage.addEventListener(Event.ENTER_FRAME, updateTfPosition);
- //24 раза в секунду возвращаем текстовое поле на место
- updateTfValue();
- //запускаем цикл обновлений и заодно обновляем значение
- }
- function updateTfPosition(e:Event):void
- {//Эта функция возвращает текстовое поле на место
- vibratto_txt.x = tf_position.x;
- //присваем координату из памяти по х
- vibratto_txt.y = tf_position.y;
- //присваем координату из памяти по y
- }
- function updateTfValue():void
- {//Эта функция обновляет содержимое текстового поля
- var timer:Timer = new Timer(20,21);
- //создаем таймер длительностью 20 милисекунд, повторить 21 раз
- /*
- таймер через каждые 20 милисекунд будет трясти текстовое поле
- после 21 повторения эффекта тряски он перестанет работать
- */
- timer.addEventListener(TimerEvent.TIMER, shakeTf);
- //каждый раз(пока идет повторение) вызываем эффект дрожи
- var random_index:Number = Math.floor(Math.random() * text_variants.length);
- //выбираем случайную ячейку массива
- if (random_index != now_index)
- {//если это не та ячейка, что была в прошлый раз, то запускаем таймер
- timer.start();
- //запускаем таймер
- setTimeout(updateTfValue, update_delay * 1000);
- //запускаем таймер, по истечении которого эта функция вызовется еще раз(изменится значение текстового поля)
- vibratto_txt.text = text_variants[random_index];
- //указываем текстовому полю значение той ячейки, что сгенерировали
- now_index = random_index;
- //запоминаем текущую ячейку
- }
- else
- {//если та ячейка, что была в прошлый раз, то повторяем генерацию случайной ячейки еще раз
- updateTfValue();
- }
- }
- function shakeTf(e:Event):void
- {//Эта функция отвечает за анимацию дрожи
- var rand:Number = Math.random();
- //генерируем число от 0 до 1
- if (rand >= 0.5)
- {//если число больше 0.5, то перемещаем вправо и вниз
- vibratto_txt.x += Math.random() * effect_power;//на расстояние от 0 до 1 пиксела
- vibratto_txt.y += Math.random() * effect_power;
- }
- else
- {//если нет, то вверх и влево
- vibratto_txt.x -= Math.random() * effect_power;
- vibratto_txt.y -= Math.random() * effect_power;
- }
- }
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- //-----------------------------------------------------------
- /*
- Определим гравитацию
- Эта переменная отвечает за то, с какой скорость падают шарики
- */
- var gravity:Number = 0.4;
- //Создаем 128 шариков с помощью цикла (можно изменить по желанию)
- for (var i = 0; i < 128; i++) {
- //Создаем 1 шарик
- var ball:MovieClip = new MovieClip();
- //Вызываем функцию, которая рисует окружность в MovieClip
- drawGraphics (ball);
- //Устанавливаем позицию шарика
- ball.x = stage.stageWidth / 2;
- ball.y = stage.stageHeight;
- //Устанавливаем случайную скорость для X и Y
- ball.speedX = Math.random() * 2 - 1;
- ball.speedY = Math.random() * -8 - 4;
- //Добавляем шарик на сцену
- addChild (ball);
- //функция ENTER_FRAME отвечает за анимацию
- ball.addEventListener (Event.ENTER_FRAME, moveBall);
- }
- /*
- Эта функция отвечает за рисование окружности в MovieClip пл заданным параметрам
- */
- function drawGraphics (mc:MovieClip):void {
- //Даем случайный цвет окружности
- mc.graphics.beginFill (0xffffff * Math.random());
- //Рисуем окружность
- mc.graphics.drawCircle (0, 0, 3);
- //Заливка
- mc.graphics.endFill ();
- }
- //Эта функция отвечает за анимацию шарика
- function moveBall (e:Event):void {
- //Поместим шарик в локальную переменную
- var ball:MovieClip = (MovieClip)(e.target);
- //Применим гравитацию для скорости Y
- ball.speedY += gravity;
- //Обновляем положение шарика
- ball.x += ball.speedX;
- ball.y += ball.speedY;
- //Chech if the ball has gone under the stage
- if (ball.y > stage.stageHeight) {
- /*
- Высчитываем высоту мыши
- Мы используем высоту мыши (координату мыши по Y), что бы задать шарику новую случайную скорость Y
- */
- var mouseHeight:Number = stage.stageHeight - mouseY;
- //Высчитываем новую скорость
- var newSpeedY = Math.random() * (-mouseHeight * 0.05);
- //Двигаем шарик в выбранную позицию
- ball.x = stage.stageWidth / 2;
- ball.y = stage.stageHeight;
- //Задаем шарику новую случайную скорость
- ball.speedX = Math.random() * 2 - 1;
- ball.speedY = newSpeedY;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement