Advertisement
terorama

Flash / Examples 5

Apr 1st, 2013
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //-----------------------------------------------------------
  2. //-----------------------------------------------------------
  3. //-----------------------------------------------------------
  4. //-----------------------------------------------------------
  5.  
  6. //Циферблат массив
  7. var NumbersArr:Array=[12,1,2,3,4,5,6,7,8,9,10,11];
  8. //Массив для текстовых полей циферблата
  9. var numbersTxts:Array=[0];
  10.  
  11. //Фон
  12. var container:Sprite = new Sprite();
  13. //Циферблат
  14. var containerNumb:Sprite = new Sprite();
  15. //Стрелки
  16. var second:Sprite = new Sprite();
  17. var minutes:Sprite = new Sprite();
  18. var hours:Sprite = new Sprite();
  19.  
  20. second.graphics.lineStyle(1, 0x000000);
  21. second.graphics.lineTo(0, -80);
  22.  
  23. minutes.graphics.lineStyle(2, 0x000000);
  24. minutes.graphics.lineTo(0, -70);
  25.  
  26. hours.graphics.lineStyle(4, 0x000000);
  27. hours.graphics.lineTo(0, -50);
  28.  
  29. container.x=90;
  30. container.y=100;
  31.  
  32. container.graphics.beginFill(0x999999);
  33. container.graphics.drawCircle(0, 0, 90);
  34.  
  35. addChild(container);
  36. container.addChild(second);
  37. container.addChild(minutes);
  38. container.addChild(hours);
  39. container.addChild(containerNumb);
  40. containerNumb.y=-75+5;
  41. containerNumb.x=-5;
  42.  
  43. //Создаем текстовые поля
  44. var i:int=0;
  45. while (i < NumbersArr.length) {
  46.     var txt:TextField = new TextField();
  47.     txt.text=NumbersArr[i];
  48.     txt.width=15;
  49.     txt.height=20;
  50.     containerNumb.addChild(txt);
  51.     numbersTxts[i]=txt;
  52.     i++;
  53. }
  54. //Положения цифр на циферблате
  55. numbersTxts[1].x=15+10+10;
  56. numbersTxts[2].x=30+20+10;
  57. numbersTxts[3].x=45+30;
  58. numbersTxts[4].x=30+20+10;
  59. numbersTxts[5].x=15+10+10;
  60. numbersTxts[6].x=0;
  61. numbersTxts[7].x=-15-10-10;
  62. numbersTxts[8].x=-30-20-10;
  63. numbersTxts[9].x=-45-30;
  64. numbersTxts[10].x=-30-20-10;
  65. numbersTxts[11].x=-15-10-10;
  66.  
  67. numbersTxts[0].y=-10;
  68. numbersTxts[1].y=10-5;
  69. numbersTxts[2].y=30-5;
  70. numbersTxts[3].y=60;
  71. numbersTxts[4].y=90+5;
  72. numbersTxts[5].y=110+5;
  73. numbersTxts[6].y=120+5;
  74. numbersTxts[7].y=100+10+5;
  75. numbersTxts[8].y=80+10+5;
  76. numbersTxts[9].y=60;
  77. numbersTxts[10].y=40-10-5;
  78. numbersTxts[11].y=20-10-5;
  79.  
  80. //Разворачиваем стрелки относительно времени
  81. var my_date:Date = new Date();
  82. second.rotation=my_date.seconds*6;
  83. minutes.rotation=my_date.minutes*6;
  84. hours.rotation=my_date.hours*30;
  85.  
  86. stage.addEventListener(Event.ENTER_FRAME, ef);
  87. function ef(e:Event):void {
  88.     var my_date:Date = new Date();
  89.     second.rotation=my_date.seconds*6;
  90.     minutes.rotation = (my_date.minutes+my_date.seconds/100)*6;
  91.     hours.rotation = (my_date.hours+my_date.minutes/100+my_date.seconds/10000)*30;
  92. }
  93.  
  94.  
  95. //-----------------------------------------------------------
  96. //-----------------------------------------------------------
  97. //-----------------------------------------------------------
  98. //-----------------------------------------------------------
  99.  
  100. //Устанавливаем начальный угол
  101. var angle:Number = 0;
  102. //Устанавливаем скорость вращения
  103. var speed:Number = 0.2;
  104. //Устанавливаем радиус круга
  105. var radius:Number = 50;
  106.  
  107. /*
  108. Мы хотим, что бы круг вращался вокруг центра сцены.
  109. Мы определим координаты центра сейчас, что бы не высчитывать их каждый кадр
  110. */
  111. var centerX:Number = stage.stageWidth / 2;
  112. var centerY:Number = stage.stageHeight / 2;
  113.  
  114. //Добавляем ENTER_FRAME символу,что бы анимировать его
  115. ball.addEventListener (Event.ENTER_FRAME, moveBall);
  116.  
  117. //Используем таймер, что бы добавлять новый след каждую 0.1 секунду
  118. var timer:Timer = new Timer(100,400000);
  119. timer.addEventListener (TimerEvent.TIMER, createTrailBall);
  120. timer.start ();
  121.  
  122. //Эта функция отвечает за движение круга
  123. function moveBall (e:Event):void {
  124.  
  125.     //Высчитываем новые Х и У координаты
  126.     var xpos:Number = centerX + Math.cos(angle) * radius;
  127.     var ypos:Number = centerY + Math.sin(angle) * radius;
  128.  
  129.     //Передвигаем окружность на новые координаты
  130.     ball.x = xpos;
  131.     ball.y = ypos;
  132.  
  133.     //Увеличиваем угол
  134.     angle += speed;
  135. }
  136.  
  137. function createTrailBall (e:Event):void {
  138.  
  139.     //Создаем новый мяч
  140.     var trailBall:Ball=new Ball();
  141.  
  142.     //Устанавливаем позицию для следа в то место, где находится круг
  143.     trailBall.x = ball.x;
  144.     trailBall.y = ball.y;
  145.  
  146.     //Добавляем ENTER_FRAME  для анимации хвоста
  147.     trailBall.addEventListener (Event.ENTER_FRAME,animateTrailBall);
  148.  
  149.     /*
  150.     Добавляем круг хвоста на сцену
  151.     Мы не хотим, что бы след находился над окружностью, поэтому используем метод
  152.     addChildAt .
  153.     */
  154.     addChildAt (trailBall,0);
  155. }
  156.  
  157.  
  158.  
  159. function animateTrailBall (e:Event):void {
  160.     //В каждом кадре увеличиваем прозрачность и уменьшаем размеры.
  161.     e.target.alpha -= 0.04;
  162.     e.target.scaleY -= 0.04;
  163.     e.target.scaleX -= 0.04;
  164.  
  165.     /*
  166.     Если шарик полностью прозрачный, удаляем его со сцены.
  167.     */
  168.     if (e.target.alpha < 0) {
  169.         e.target.removeEventListener (Event.ENTER_FRAME,animateTrailBall);
  170.         removeChild ((MovieClip)(e.target));
  171.     }
  172. }
  173.  
  174. //-----------------------------------------------------------
  175. //-----------------------------------------------------------
  176. //-----------------------------------------------------------
  177. //-----------------------------------------------------------
  178.  
  179. import flash.events.MouseEvent;
  180. //останавливаем воспроизведение клипов
  181. banker1.stop();
  182. banker2.stop();
  183. you1.stop();
  184. you2.stop();
  185. //////
  186.  
  187. startGame_btn.visible = false;// Делаем невидимой кнопку начала игры
  188.  
  189. var rate:Number;//объявляем переменную
  190. var yourMoney:Number = new Number(100);//Переменная, которая содержит все деньги игрока. Начальный капитал 100
  191.  
  192. yourMoney_txt.text = String(yourMoney);//Это текстовое поле, которое отображает все деньги игрока.
  193.  
  194. rate_txt.text = "";//Делаем поле для ввода ставки пустым
  195. rate_txt.restrict = "0-9";//Разрешаем ввод в поле для ставки только цифры
  196.  
  197.  
  198. //Добавляем нужные слушатели
  199. makeRate_btn.addEventListener(MouseEvent.CLICK, checkRate_fun);
  200. startGame_btn.addEventListener(MouseEvent.CLICK, startGame_fun);
  201. /////
  202.  
  203.  
  204. //Описываем функцию, котора проверяет ставку
  205. function checkRate_fun(e:MouseEvent):void
  206. {
  207.     rate = Number(rate_txt.text);//Передаем в переменную значение текстового поля ставки
  208.  
  209. //Проверяем ставку
  210.     if (rate == 0)  //если ставка равна 0
  211.     {
  212.         message_txt.text = "Недопустимая ставка";
  213.  
  214.     }
  215.     else if (rate>yourMoney)//если ставка больше всех средств игрока
  216.     {
  217.         message_txt.text = "Недостаточно средств";
  218.     }
  219.     else if (rate<yourMoney)//если ставка меньше всех средств игрока
  220.     {
  221.         yourMoney = yourMoney - rate;//отнимаем от всех средств ставку
  222.         yourMoney_txt.text = String(yourMoney);//выводим в текстовое поле количество денег игрока
  223.         startGame_btn.visible = true;//делаем кнопку для начала игры видимой
  224.         makeRate_btn.visible = false;//делаем кнопку ставок невидимой
  225.  
  226.  
  227.     }
  228.  
  229. }
  230.  
  231. //Описываем функцию начала игры
  232. function startGame_fun(e:MouseEvent):void
  233. {
  234.     startGame_btn.visible=false;//делаем кнопку начала игры невидимой
  235.     makeRate_btn.visible=true;//делаем кнопку ставок невидимой
  236.  
  237.     //Эти переменные принимают случайное значение от 1 до 6. То есть каждая переменная отвечает за какой-то кубик
  238.     var b_1:Number = Math.round(Math.random() * 5)+1;
  239.     var b_2:Number = Math.round(Math.random() * 5)+1;
  240.     var y_1:Number = Math.round(Math.random() * 5)+1;
  241.     var y_2:Number = Math.round(Math.random() * 5)+1;
  242.     //////
  243.     //Плюсуем значения переменных.
  244.     var B:Number = b_1 + b_2;
  245.     var Y:Number = y_1+y_2;
  246. //////
  247. //Переключаем каждый кубик а нужный кадр
  248.     banker1.gotoAndStop(b_1);
  249.     banker2.gotoAndStop(b_2);
  250.     you1.gotoAndStop(y_1);
  251.     you2.gotoAndStop(y_2);
  252. ////
  253.  
  254. //Сравниваем результат игрока и банкира
  255.     if (B>Y)
  256.     {
  257.         message_txt.text = "Вы проиграли";
  258.  
  259.     }
  260.     else if (B<Y)
  261.     {
  262.         message_txt.text = "Вы выиграли";
  263.         yourMoney=yourMoney+(rate*2);
  264.         yourMoney_txt.text = String(yourMoney);
  265.  
  266.     }
  267.     else if (B==Y)
  268.     {
  269.         message_txt.text = "Ничья";
  270.         yourMoney=yourMoney+rate;
  271.     yourMoney_txt.text = String(yourMoney);
  272.     }
  273.  
  274. }
  275.  
  276. //-----------------------------------------------------------
  277. //-----------------------------------------------------------
  278. //-----------------------------------------------------------
  279. //-----------------------------------------------------------
  280.  
  281. //Количество элементов карусели
  282. const NUMBER_OF_ITEMS:uint = 20;
  283.  
  284. //Этот массив содержит все элементы карусели
  285. var menuItems:Array = new Array();
  286.  
  287. //Устанавливаем фокальную длину
  288. var focalLength:Number = 350;
  289.  
  290. //Устанавливаем точку вращения
  291. var vanishingPointX:Number = stage.stageWidth / 2;
  292. var vanishingPointY:Number = stage.stageHeight / 2;
  293.  
  294. //Высчитываем angleSpeed в слушателе ENTER_FRAME
  295. var angleSpeed:Number = 0;
  296.  
  297. //Радиус окружности
  298. var radius:Number = 128;
  299.  
  300. //Высчитываем разницу угла между элементами карусели (в радианах)
  301. var angleDifference:Number = Math.PI * (360 / NUMBER_OF_ITEMS) / 180;
  302.  
  303. //Этот цикл создает и позиционирует элементы карусели
  304. for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) {
  305.  
  306.     //Создаем новый элемент
  307.     var menuItem:MenuItem = new MenuItem();
  308.  
  309.     //Высчитываем стартовый угол
  310.     var startingAngle:Number = angleDifference * i;
  311.  
  312.     //Устанавливаем "currentAngle" для элемента
  313.     menuItem.currentAngle = startingAngle;
  314.  
  315.     //Позиционируем
  316.     menuItem.xpos3D =  -  radius * Math.cos(menuItem.currentAngle) * 0.5;
  317.     menuItem.ypos3D = radius * Math.sin(startingAngle);
  318.     menuItem.zpos3D = radius * Math.cos(startingAngle);
  319.  
  320.     //Высчитываем размер для элемента (чем дальше , тем меньше)
  321.     var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
  322.  
  323.     //Масштабируем элемент, в зависимости от полученных выше результатов
  324.     menuItem.scaleX = menuItem.scaleY = scaleRatio;
  325.  
  326.     // Позиционируем элемент на сцене
  327.     menuItem.x = vanishingPointX + menuItem.xpos3D * scaleRatio;
  328.     menuItem.y = vanishingPointY + menuItem.ypos3D * scaleRatio;
  329.  
  330.     //Добавляем прозрачности
  331.     menuItem.alpha = 0.3;
  332.  
  333.     //Добавляем текст
  334.     menuItem.menuItemText.text = "Menu item " + i;
  335.  
  336.     //Сделаем так, что бы текст не реагировал на события мыши
  337.     menuItem.mouseChildren = false;
  338.  
  339.     //Добавим нужные слушатели событий к элементам карусели
  340.     menuItem.addEventListener(MouseEvent.MOUSE_OVER, mouseOverItem);
  341.     menuItem.addEventListener(MouseEvent.MOUSE_OUT, mouseOutItem);
  342.     menuItem.addEventListener(MouseEvent.CLICK, itemClicked);
  343.  
  344.     //Добавим элемент в массив
  345.     menuItems.push(menuItem);
  346.  
  347.     //Добавим элемент на сцену
  348.     addChild(menuItem);
  349. }
  350.  
  351. //добавим слушатель события  ENTER_FRAME для анимации
  352. addEventListener(Event.ENTER_FRAME, moveCarousel);
  353.  
  354. //Эта функция вызывается в каждом кадре
  355. function moveCarousel(e:Event):void {
  356.  
  357.     //Высчитываем скорость поворота в зависимости от координаты мыши Y
  358.     angleSpeed = (mouseY - stage.stageHeight / 2) * 0.0002;
  359.  
  360.     //Пробежимся циклом по всем элементам карусели
  361.     for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) {
  362.  
  363.         //Добавим элемент в локальную переменную
  364.         var menuItem:MenuItem = (MenuItem)(menuItems[i]);
  365.  
  366.         //Обновляем текущий угол элемента
  367.         menuItem.currentAngle += angleSpeed;
  368.  
  369.         //Высчитываем размер
  370.         var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
  371.  
  372.         //Масштабируем в зависимости от полученных выше результатов
  373.         menuItem.scaleX=menuItem.scaleY=scaleRatio;
  374.  
  375.         //Устанавливаем новые 3D координаты
  376.         menuItem.xpos3D=- radius*Math.cos(menuItem.currentAngle)*0.5;
  377.         menuItem.ypos3D=radius*Math.sin(menuItem.currentAngle);
  378.         menuItem.zpos3D=radius*Math.cos(menuItem.currentAngle);
  379.  
  380.         //Обновляем координаты элементов
  381.         menuItem.x=vanishingPointX+menuItem.xpos3D*scaleRatio;
  382.         menuItem.y=vanishingPointY+menuItem.ypos3D*scaleRatio;
  383.     }
  384.  
  385.     //Вызываем функцию, которая правильно накладывает элементы друг на друга
  386.     sortZ();
  387. }
  388.  
  389. //Опишем эту функцию
  390. function sortZ():void {
  391.  
  392.     //Ищем в массиве элемент, который имеет самую большую координату Z
  393.     menuItems.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);
  394.  
  395.     //Устанавливаем новый индекс
  396.     for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) {
  397.         setChildIndex(menuItems[i], i);
  398.     }
  399. }
  400.  
  401. //Эта функция вызывается, когда мышь над элементом
  402. function mouseOverItem(e:Event):void {
  403.  
  404.     //Делаем объект не прозрачный
  405.     e.target.alpha=1;
  406. }
  407.  
  408. //Эта функция вызывается, когда курсор мыши вне элемента
  409. function mouseOutItem(e:Event):void {
  410.  
  411.     //Добавляем прозрачность
  412.     e.target.alpha=0.3;
  413. }
  414.  
  415. //Эта функция вызывается когда вы кликаете мышью по элементу
  416. function itemClicked(e:Event):void {
  417.  
  418.     trace("Вы только что кликнули на один из элементов");
  419. }
  420.  
  421.  
  422. //-----------------------------------------------------------
  423. //-----------------------------------------------------------
  424. //-----------------------------------------------------------
  425. //-----------------------------------------------------------
  426.  
  427. on(click)
  428. {
  429.     var number_of_letters = this._parent.ns_1.value;
  430.     //НИЖЕ ИЗ АЛФАВИТА УБРАНЫ i & o, ДАБЫ НЕ БЫЛО НЕДОПОНИМАНИЙ, ЧТО ЭТО ЗА СИМВОЛ
  431.     var LETTER:String = "ABCDEFGHJKLMNPQRSTUVWXYZ";
  432.  
  433.     var PASSWORD:String = new String("");
  434.     for(var i = 0; i < number_of_letters; i++)
  435.     {
  436.         var random_letter = Math.floor(Math.random()*3);
  437.  
  438.         if(random_letter == 0)
  439.         {
  440.             //НИЖЕ ИЗ ЧИСЕЛ УБРАН НОЛЬ, ДАБЫ НЕ СПУТАТЬ ЕГО С БУКВОЙ о
  441.             random_letter = 1 + Math.floor(Math.random()* 9);
  442.         } else {
  443.             if(random_letter == 1)
  444.             {
  445.                 var random_letter:String = LETTER.charAt(Math.floor(Math.random()*LETTER.length)).toLowerCase();
  446.             } else {
  447.                 random_letter = LETTER.charAt(Math.floor(Math.random()*LETTER.length));
  448.             }
  449.         }
  450.         PASSWORD += random_letter;
  451.     }
  452.     this._parent.ta_1.text = PASSWORD;
  453. }
  454.  
  455.  
  456. //-----------------------------------------------------------
  457. //-----------------------------------------------------------
  458. //-----------------------------------------------------------
  459. //-----------------------------------------------------------
  460.  
  461. import flash.utils.setTimeout;
  462. import flash.utils.Timer;
  463. import flash.geom.Point;
  464. import flash.events.Event;
  465.  
  466.  
  467. var text_variants:Array = ['1 вариант текста','2 вариант текста','3 вариант текста','4 вариант текста'];
  468. //варианты значений текстового поля
  469. var tf_position:Point;
  470. //Point содержит в себе координаты чего-либо(текстового поля), полезно, т.к. нет необходимости создавать две переменные
  471. var now_index:Number = -1;
  472. //последний индекс в массиве вариантов, нужен для защиты от повторения значения
  473. var effect_power:Number = 1;
  474. //насколько сильно объект будет "улетать" от своей текущей позиции
  475. var update_delay:Number = 4;
  476. //время задержки перед следующим обновлением значения текстового поля в секундах
  477.  
  478.  
  479. initStage();
  480. function initStage():void
  481. {//инициализирует сцену
  482.  
  483.     tf_position = new Point(vibratto_txt.x,vibratto_txt.y);
  484.     //запоминаем текущие координаты
  485.     stage.addEventListener(Event.ENTER_FRAME, updateTfPosition);
  486.     //24 раза в секунду возвращаем текстовое поле на место
  487.     updateTfValue();
  488.     //запускаем цикл обновлений и заодно обновляем значение
  489. }
  490.  
  491.  
  492. function updateTfPosition(e:Event):void
  493. {//Эта функция возвращает текстовое поле на место
  494.  
  495.     vibratto_txt.x = tf_position.x;
  496.     //присваем координату из памяти по х
  497.     vibratto_txt.y = tf_position.y;
  498.     //присваем координату из памяти по y
  499. }
  500.  
  501.  
  502. function updateTfValue():void
  503. {//Эта функция обновляет содержимое текстового поля
  504.  
  505.     var timer:Timer = new Timer(20,21);
  506.     //создаем таймер длительностью 20 милисекунд, повторить 21 раз
  507.     /*
  508.        таймер через каждые 20 милисекунд будет трясти текстовое поле
  509.        после 21 повторения эффекта тряски он перестанет работать
  510.     */
  511.     timer.addEventListener(TimerEvent.TIMER, shakeTf);
  512.     //каждый раз(пока идет повторение) вызываем эффект дрожи
  513.  
  514.     var random_index:Number = Math.floor(Math.random() * text_variants.length);
  515.     //выбираем случайную ячейку массива
  516.     if (random_index != now_index)
  517.     {//если это не та ячейка, что была в прошлый раз, то запускаем таймер
  518.  
  519.         timer.start();
  520.         //запускаем таймер
  521.         setTimeout(updateTfValue, update_delay * 1000);
  522.         //запускаем таймер, по истечении которого эта функция вызовется еще раз(изменится значение текстового поля)
  523.         vibratto_txt.text = text_variants[random_index];
  524.         //указываем текстовому полю значение той ячейки, что сгенерировали
  525.         now_index = random_index;
  526.         //запоминаем текущую ячейку
  527.     }
  528.     else
  529.     {//если та ячейка, что была в прошлый раз, то повторяем генерацию случайной ячейки еще раз
  530.  
  531.         updateTfValue();
  532.     }
  533. }
  534.  
  535.  
  536. function shakeTf(e:Event):void
  537. {//Эта функция отвечает за анимацию дрожи
  538.  
  539.     var rand:Number = Math.random();
  540.     //генерируем число от 0 до 1
  541.     if (rand >= 0.5)
  542.     {//если число больше 0.5, то перемещаем вправо и вниз
  543.  
  544.         vibratto_txt.x +=  Math.random() * effect_power;//на расстояние от 0 до 1 пиксела
  545.         vibratto_txt.y +=  Math.random() * effect_power;
  546.     }
  547.     else
  548.     {//если нет, то вверх и влево
  549.  
  550.         vibratto_txt.x -=  Math.random() * effect_power;
  551.         vibratto_txt.y -=  Math.random() * effect_power;
  552.     }
  553. }
  554.  
  555. //-----------------------------------------------------------
  556. //-----------------------------------------------------------
  557. //-----------------------------------------------------------
  558. //-----------------------------------------------------------
  559.  
  560.  
  561. /*
  562. Определим гравитацию
  563. Эта переменная отвечает за то, с какой скорость падают шарики
  564. */
  565. var gravity:Number = 0.4;
  566.  
  567. //Создаем 128 шариков с помощью цикла (можно изменить по желанию)
  568. for (var i = 0; i < 128; i++) {
  569.  
  570.     //Создаем 1 шарик
  571.     var ball:MovieClip = new MovieClip();
  572.  
  573.     //Вызываем функцию, которая рисует окружность в MovieClip
  574.     drawGraphics (ball);
  575.  
  576.     //Устанавливаем позицию шарика
  577.     ball.x = stage.stageWidth / 2;
  578.     ball.y = stage.stageHeight;
  579.  
  580.     //Устанавливаем случайную скорость для X и Y
  581.     ball.speedX = Math.random() * 2 - 1;
  582.     ball.speedY = Math.random() * -8 - 4;
  583.  
  584.     //Добавляем шарик на сцену
  585.     addChild (ball);
  586.  
  587.     //функция ENTER_FRAME отвечает за анимацию
  588.     ball.addEventListener (Event.ENTER_FRAME, moveBall);
  589. }
  590.  
  591. /*
  592. Эта функция отвечает за рисование окружности в MovieClip пл заданным параметрам
  593. */
  594. function drawGraphics (mc:MovieClip):void {
  595.  
  596.     //Даем случайный цвет окружности
  597.     mc.graphics.beginFill (0xffffff *  Math.random());
  598.  
  599.     //Рисуем окружность
  600.     mc.graphics.drawCircle (0, 0, 3);
  601.  
  602.     //Заливка
  603.     mc.graphics.endFill ();
  604.  
  605. }
  606. //Эта функция отвечает за анимацию шарика
  607. function moveBall (e:Event):void {
  608.  
  609.     //Поместим шарик в локальную переменную
  610.     var ball:MovieClip = (MovieClip)(e.target);
  611.  
  612.     //Применим гравитацию для скорости Y
  613.     ball.speedY += gravity;
  614.  
  615.     //Обновляем положение шарика
  616.     ball.x += ball.speedX;
  617.     ball.y += ball.speedY;
  618.  
  619.     //Chech if the ball has gone under the stage
  620.     if (ball.y > stage.stageHeight) {
  621.  
  622.         /*
  623.         Высчитываем высоту мыши
  624.         Мы используем высоту мыши (координату мыши по Y), что бы задать шарику новую случайную скорость Y
  625.         */
  626.         var mouseHeight:Number = stage.stageHeight - mouseY;
  627.  
  628.         //Высчитываем новую скорость
  629.         var newSpeedY = Math.random() * (-mouseHeight * 0.05);
  630.  
  631.         //Двигаем шарик в выбранную позицию
  632.         ball.x = stage.stageWidth / 2;
  633.         ball.y = stage.stageHeight;
  634.  
  635.         //Задаем шарику новую случайную скорость
  636.         ball.speedX = Math.random() * 2 - 1;
  637.         ball.speedY = newSpeedY;
  638.     }
  639. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement