Advertisement
terorama

Flash / Examples 4

Apr 1st, 2013
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //-----------------------------------------------------------
  2. //-----------------------------------------------------------
  3. //-----------------------------------------------------------
  4. //-----------------------------------------------------------
  5. package {
  6.     import fl.transitions.Tween;
  7.     import fl.transitions.TweenEvent;
  8.     import flash.display.DisplayObjectContainer;
  9.     import flash.display.MovieClip;
  10.     import flash.events.MouseEvent;
  11.     import flash.geom.Point;
  12.     import fl.transitions.easing.Strong;
  13.  
  14.     public class Vertelka extends MovieClip {
  15.         //В этот мувиклип поместим наши страницы. А сам мотор будет вращаться вокруг своей оси.
  16.         private var _motor:MovieClip = new MovieClip()
  17.         //В этот массив поместим мувиклипы страниц.
  18.         private var _pages:Array = []
  19.         //В эту переменную поместим шапку.
  20.         private var _title:MovieClip
  21.         //Это счетчик текущей страницы.
  22.         private var _currentPage:int = 0
  23.         //Это твин объект, который будет вращать мотор со страницами.
  24.         private var _tween:Tween = new Tween( _motor, "rotationY", Strong.easeInOut, 0, 0, 0, true )
  25.         //Это длительность анимации вращения.
  26.         private const TWEEN_TIME:Number = 2.0
  27.  
  28.         //Конструктор.
  29.         public function Vertelka( container:DisplayObjectContainer, pos:Point, pages:Array, title:MovieClip ) {
  30.             //Добавляем нашу вертелку на сцену.
  31.             container.addChild( this )
  32.             //Добавляем в нашу вертелку мотор.
  33.             this.addChild( _motor )
  34.             //Добавляем страницы.
  35.             AddPages( pages )
  36.             //Добавляем шапку.
  37.             _title = title
  38.             this.addChild( _title )
  39.             //Позиционируем.
  40.             this.x = pos.x
  41.             this.y = pos.y
  42.             _title.x = - pos.x
  43.             _title.y = - pos.y
  44.             //Отключаем реакцию на мышь у дочерних элементов вертелки.
  45.             this.mouseChildren = false
  46.             //Останавливаем твин. Потому что он при создании автоматически начинает играть анимацию. А нам это не нужно пока что. :)
  47.             _tween.stop()
  48.             //Добавляем слушатель клика мыши.
  49.             this.addEventListener( MouseEvent.CLICK, Click )
  50.             //Добавляем слушатель анимации твина.
  51.             _tween.addEventListener( TweenEvent.MOTION_CHANGE, ChangePage )
  52.         }
  53.  
  54.         //Функция добаавления страниц.
  55.         private function AddPages( pages:Array ):void {
  56.             //Помещаем страницы в массив.
  57.             _pages = pages
  58.  
  59.             //Каждую страницу размещаем под нужным углом и в нужной позиции. Принцип такой. Нечетную страницу кладем обычно.
  60.             //А четную разворачиваем на 180 гладусов и кладем в противоположный угол.
  61.             //Таким образом нечетные страницы как бы лежат на обратной стороне.
  62.             for ( var i:int = 0; i < _pages.length; i++ ) {
  63.                 var page:MovieClip = _pages[i]
  64.                 _motor.addChild( page )
  65.                 if ( i % 2 == 1 ) {
  66.                     page.x = page.width / 2
  67.                     page.rotationY = 180
  68.                 }
  69.                 else {
  70.                     page.x = - page.width / 2
  71.                 }
  72.                 page.y = - page.height / 2
  73.             }
  74.  
  75.             //Прячем ненужные в данный момент страницы.
  76.             SetCurrentPageAlpha()
  77.         }
  78.  
  79.         //Функция отображения текущей страницы.
  80.         private function SetCurrentPageAlpha( e:TweenEvent = null ):void {
  81.             for ( var i:int = 0; i < _pages.length; i++ ) {
  82.                 _pages[i].alpha = 0
  83.                 if ( _currentPage == i ) {
  84.                     _pages[i].alpha = 1
  85.                     _motor.addChildAt( _pages[i], _motor.numChildren )
  86.                 }
  87.             }
  88.         }
  89.  
  90.         //Функция клика по вертелке. Если кликнуть по левой стороне, то страницы листаются назад. Если по правой - вперед.
  91.         private function Click( e:MouseEvent ):void {
  92.             if ( this.mouseX > 0 ) {
  93.                 RotateNext()
  94.             }
  95.             else {
  96.                 RotateLast()
  97.             }
  98.         }
  99.  
  100.         //Функция перелистывания вперед.
  101.         private function RotateNext():void {
  102.             if ( _currentPage < _pages.length - 1 ) {
  103.                 var currentRotation:Number = ( ++_currentPage ) * 180
  104.                 _pages[_currentPage].alpha = 1
  105.                 _tween.stop()
  106.                 _tween.begin = _motor.rotationY
  107.                 _tween.finish = currentRotation
  108.                 _tween.duration = TWEEN_TIME
  109.                 _tween.start()
  110.             }
  111.         }
  112.  
  113.         //Функция передистывания назад.
  114.         private function RotateLast():void {
  115.             if ( _currentPage > 0 ) {
  116.                 var currentRotation:Number = ( --_currentPage ) * 180
  117.                 _pages[_currentPage].alpha = 1
  118.                 _tween.stop()
  119.                 _tween.begin = _motor.rotationY
  120.                 _tween.finish = currentRotation
  121.                 _tween.duration = TWEEN_TIME
  122.                 _tween.start()
  123.             }
  124.         }
  125.  
  126.         //Функция контроля анимации перелистывания.
  127.         private function ChangePage( e:TweenEvent ):void {
  128.             var tween:Tween = Tween( e.target )
  129.             var tRot:Number = 90
  130.             var pos:Number = Math.abs( tween.finish - tween.getPosition() )
  131.             //Когда мотор поворачивается на половину, включаем новую страницу.
  132.             if ( pos < 90 ) {
  133.                 SetCurrentPageAlpha()
  134.                 tRot = -1
  135.             }
  136.             _motor.scaleX = _motor.scaleY = Math.abs( Math.cos( pos * Math.PI / 180 ) ) / 2 + 0.5
  137.             _title.y = - Math.abs( Math.sin( pos * Math.PI / 180 ) ) * _title.height - 160
  138.         }
  139.     }
  140. }
  141.  
  142. import flash.geom.Point;
  143.  
  144. var pages:Array = [new Page_1(), new Page_2(), new Page_3()]
  145. var vertelka:Vertelka = new Vertelka( this, new Point( 120, 160 ), pages, new TopTip() )
  146.  
  147. //-----------------------------------------------------------
  148. //-----------------------------------------------------------
  149. //-----------------------------------------------------------
  150. //-----------------------------------------------------------
  151.  
  152. package
  153. {
  154.     import flash.display.MovieClip;
  155.     import flash.events.Event;
  156.     import flash.utils.Dictionary;
  157.  
  158.  
  159.     public class Snow extends MovieClip
  160.     {
  161.         var snowflakes:Array = new Array();
  162.         var snowflakeProps:Dictionary= new Dictionary(true);
  163.         var max_snowsize:Number = .04;
  164.         // pixels
  165.         var snowflakesCnt:Number = 150;
  166.         var oheight:Number;
  167.         var owidth:Number;
  168.  
  169.         public function Snow($width,$height):void {
  170.  
  171.             owidth = $width;
  172.             oheight = $height;
  173.             // quantity
  174.             for (var i:int=0; i<snowflakesCnt; i++) {
  175.  
  176.                 var t:MovieClip = new SnowFlake();
  177.                 t.mouseEnabled = false
  178.                 t.name = "snowflake"+i;
  179.  
  180.                 t.alpha = 20+Math.random()*60;
  181.                 t.x = -(owidth/2)+Math.random()*(1.5*owidth);
  182.                 t.y = -(oheight/2)+Math.random()*(1.5*oheight);
  183.                 t.scaleX = t.scaleY=.5+Math.random()*(max_snowsize*10);
  184.                 var o:Object = new Object();
  185.                 o.k = 1+Math.random()*2;
  186.                 o.wind = -1.5+Math.random()*(1.4*3);
  187.  
  188.                 snowflakeProps[t] = o;
  189.  
  190.                 addChild(t);
  191.                 snowflakes.push(t);
  192.             }
  193.             addEventListener(Event.ENTER_FRAME,snowFlakeMover)
  194.         }
  195.         private function shakeUp():void{
  196.             for (var i:int=0; i<snowflakes.length; i++) {
  197.                 var t:MovieClip = snowflakes[i] as MovieClip;
  198.                 t.x = -(owidth/2)+Math.random()*(1.5*owidth);
  199.                 t.y = -(oheight/2)+Math.random()*(1.5*oheight);
  200.             }
  201.         }
  202.         private function snowFlakeMover(evt:Event):void {
  203.             var dO:MovieClip;
  204.             var o :Object;
  205.             if(visible && parent.visible){
  206.             for (var i:int = 0; i < snowflakes.length; i++) {
  207.                 dO = snowflakes[i] as MovieClip;
  208.                 o = snowflakeProps[dO];
  209.                 dO.y += o.k;
  210.                 dO.x += o.wind;
  211.                 if (dO.y>oheight+10) {
  212.  
  213.                     dO.y = -20;
  214.  
  215.                 }
  216.                 if (dO.x>owidth+20) {
  217.  
  218.                     dO.x = -(owidth/2)+Math.random()*(1.5*owidth);
  219.                     dO.y = -20;
  220.  
  221.                 } else if (dO.x<-20) {
  222.  
  223.                     dO.x= -(owidth/2)+Math.random()*(1.5*owidth);
  224.                     dO.y = -20;
  225.                 }
  226.  
  227.             }
  228.             }
  229.         }
  230.     }
  231.  
  232. }
  233. //-----------------------------------------------------
  234.  
  235. package
  236. {
  237.     import flash.display.Shape;
  238.     import flash.events.Event;
  239.     import flash.display.Sprite;
  240.     import flash.display.MovieClip;
  241.     import flash.display.Bitmap;
  242.     import flash.display.BitmapData;  
  243.     import flash.display.BlendMode;
  244.     import flash.geom.ColorTransform;
  245.     import flash.geom.Rectangle;
  246.     import flash.geom.Point;
  247.     import flash.geom.Matrix;
  248.     import flash.filters.ColorMatrixFilter;
  249.     import flash.display.GradientType;
  250.     import flash.display.Graphics;
  251.     import flash.display.InterpolationMethod;
  252.     import flash.display.SpreadMethod;
  253.  
  254.  
  255.     public class Background extends MovieClip
  256.     {
  257.         //Переменные для создания шума
  258.         private var dir:Array
  259.         private var point:Point
  260.         private var bd:BitmapData;
  261.         private var bmp:Bitmap;
  262.         private var bdmultiply:BitmapData;
  263.         private var bms:Sprite;
  264.         private var rect:Rectangle
  265.         private var cmf:ColorMatrixFilter;
  266.         private var w:Number
  267.         private var h:Number
  268.  
  269.         //Переменные для создания градиента
  270.         private var gshape:Shape
  271.         private var gmetrics:Rectangle
  272.         private var gmatrix:Matrix
  273.         private var gtype:String
  274.         private var gspread:String
  275.         private var ginterpolation:String
  276.         private var gcolours:Array
  277.         private var galphas:Array
  278.         private var gratios:Array
  279.  
  280.         public function Background( $width:Number = 100, $height:Number = 100 )
  281.         {
  282.             w = $width
  283.             h = $height
  284.             rect = new Rectangle(0, 0, w, h);
  285.             point = new Point(0, 0);
  286.             dir = [new Point( 1, 262 ), new Point( 400, 262 )];
  287.  
  288.             //Задаём яркость, контраст и насыщенность шума заднего фона.
  289.             initColorMatrix();
  290.  
  291.             //Добавляем шум.
  292.             initBackgroundNoise();
  293.  
  294.             //Добавляем градиент.
  295.             initBackgroundGradient();
  296.         }
  297.  
  298.         private function initColorMatrix():void {
  299.             cmf = new ColorMatrixFilter([0, 0, 0, 0, -20, //красный
  300.                                          0, 2, 0, 0, -20, //зеленый
  301.                                          0, 0, 4, 0, 0, //синий
  302.                                          0, 0, 0, 0.5, -20 ]); //альфа
  303.         }
  304.  
  305.         private function initBackgroundNoise():void {
  306.             //Первая картинка с шумом
  307.             bd = new BitmapData( w, h, false, 0 );
  308.             bmp = new Bitmap( bd );
  309.             bmp.smoothing = true;
  310.             addChild( bmp );
  311.  
  312.             //Вторая картинка с шумом перекрывает первую с типом смешивания OVERLAY.
  313.             bdmultiply = new BitmapData(w, h, false, 0 );
  314.             bms = new Sprite();
  315.             bms.addChild( new Bitmap( bdmultiply ) )
  316.             addChild( bms )
  317.             bms.blendMode = BlendMode.OVERLAY;
  318.  
  319.             //Отрисовываем фон так, чтобы он двигался.
  320.             addEventListener( Event.ENTER_FRAME, renderBG );
  321.         }
  322.  
  323.         private function initBackgroundGradient() {
  324.             //Это обычный градиент, идущий снизу вверх.
  325.             gshape = new Shape();
  326.             gmetrics = new Rectangle();
  327.             gmatrix = new Matrix();
  328.  
  329.             gtype = GradientType.LINEAR;
  330.             gspread = SpreadMethod.PAD;
  331.             ginterpolation = InterpolationMethod.LINEAR_RGB;
  332.  
  333.             gcolours = [ 0x170a02, 0x170a02 ];
  334.             galphas = [ 0, 1 ];
  335.             gratios = [ 0, 255 ];
  336.  
  337.             gmatrix.createGradientBox(w, h,(Math.PI/180)*90 );
  338.  
  339.             gshape.graphics.clear();
  340.             gshape.graphics.beginGradientFill(gtype, gcolours, galphas, gratios, gmatrix, gspread, ginterpolation );
  341.  
  342.             gshape.graphics.drawRect( 0, 0, w, h );
  343.             gshape.graphics.endFill();
  344.             addChild(gshape)
  345.         }
  346.  
  347.         private function renderBG(event:Event):void {
  348.             //Обновление смещения шума
  349.             dir[0].x-= 1.5
  350.             dir[0].y-= 0 //С этим параметром можете поиграть самостоятельно
  351.             dir[1].x-= 0 //И с этим
  352.             dir[1].y -= 0 //И с этим тоже
  353.  
  354.             //Зададим первой Bitmap шум Перлина
  355.             bd.perlinNoise( w, h, 2, 10, false, true, 7, true, dir );
  356.             //Зададим цвет.
  357.             bd.colorTransform( rect, new ColorTransform( 0.1, 0.8, 1 ) );
  358.             //отфильтруем исходное изображение
  359.             bd.applyFilter( bd, rect, point, cmf )
  360.  
  361.             //Еще одна картинка с шумом Перлина
  362.             bdmultiply.perlinNoise( w, h, 3, 21, false, true, 7, true, dir )
  363.             //Зададим и для нее цвет
  364.             bdmultiply.colorTransform( rect, new ColorTransform( 1, 0.6, 0.4 ) );
  365.         }
  366.  
  367.     }
  368.  }
  369. //-----------------------------------------------------
  370. ackage {
  371.     import fl.motion.Source;
  372.     import flash.display.MovieClip;
  373.     import flash.events.KeyboardEvent;
  374.     import flash.events.MouseEvent;
  375.     import flash.events.TimerEvent;
  376.     import flash.media.Sound;
  377.     import com.greensock.*;
  378.     import flash.utils.Timer;
  379.  
  380.     public class Main extends MovieClip {
  381.         //Импортируем звуки для каждой клавиши.
  382.         [Embed(source = "audio/key1.mp3")] public const Key1:Class; public var sKey1:Sound = new Key1();
  383.         [Embed(source = "audio/key2.mp3")] public const Key2:Class; public var sKey2:Sound = new Key2();
  384.         [Embed(source = "audio/key3.mp3")] public const Key3:Class; public var sKey3:Sound = new Key3();
  385.         [Embed(source = "audio/key4.mp3")] public const Key4:Class; public var sKey4:Sound = new Key4();
  386.         [Embed(source = "audio/key5.mp3")] public const Key5:Class; public var sKey5:Sound = new Key5();
  387.         [Embed(source = "audio/key6.mp3")] public const Key6:Class; public var sKey6:Sound = new Key6();
  388.         [Embed(source = "audio/key7.mp3")] public const Key7:Class; public var sKey7:Sound = new Key7();
  389.         [Embed(source = "audio/key8.mp3")] public const Key8:Class; public var sKey8:Sound = new Key8();
  390.         [Embed(source = "audio/key9.mp3")] public const Key9:Class; public var sKey9:Sound = new Key9();
  391.         [Embed(source = "audio/key10.mp3")] public const Key10:Class; public var sKey10:Sound = new Key10();
  392.         [Embed(source = "audio/key11.mp3")] public const Key11:Class; public var sKey11:Sound = new Key11();
  393.         [Embed(source = "audio/key12.mp3")] public const Key12:Class; public var sKey12:Sound = new Key12();
  394.         [Embed(source = "audio/key13.mp3")] public const Key13:Class; public var sKey13:Sound = new Key13();
  395.         [Embed(source = "audio/key14.mp3")] public const Key14:Class; public var sKey14:Sound = new Key14();
  396.         [Embed(source = "audio/key15.mp3")] public const Key15:Class; public var sKey15:Sound = new Key15();
  397.         [Embed(source = "audio/key16.mp3")] public const Key16:Class; public var sKey16:Sound = new Key16();
  398.         [Embed(source = "audio/key17.mp3")] public const Key17:Class; public var sKey17:Sound = new Key17();
  399.         [Embed(source = "audio/key18.mp3")] public const Key18:Class; public var sKey18:Sound = new Key18();
  400.         [Embed(source = "audio/key19.mp3")] public const Key19:Class; public var sKey19:Sound = new Key19();
  401.         [Embed(source = "audio/key20.mp3")] public const Key20:Class; public var sKey20:Sound = new Key20();
  402.         [Embed(source = "audio/key21.mp3")] public const Key21:Class; public var sKey21:Sound = new Key21();
  403.         [Embed(source = "audio/key22.mp3")] public const Key22:Class; public var sKey22:Sound = new Key22();
  404.         [Embed(source = "audio/key23.mp3")] public const Key23:Class; public var sKey23:Sound = new Key23();
  405.         [Embed(source = "audio/key24.mp3")] public const Key24:Class; public var sKey24:Sound = new Key24();
  406.         [Embed(source = "audio/key25.mp3")] public const Key25:Class; public var sKey25:Sound = new Key25();
  407.         [Embed(source = "audio/key26.mp3")] public const Key26:Class; public var sKey26:Sound = new Key26();
  408.         [Embed(source = "audio/key27.mp3")] public const Key27:Class; public var sKey27:Sound = new Key27();
  409.         [Embed(source = "audio/key28.mp3")] public const Key28:Class; public var sKey28:Sound = new Key28();
  410.         [Embed(source = "audio/key29.mp3")] public const Key29:Class; public var sKey29:Sound = new Key29();
  411.  
  412.         //Создаем массив со звуками для удобства.
  413.         private var _keysSounds:Array = [sKey1, sKey3, sKey5, sKey6, sKey8, sKey10, sKey12, sKey13, sKey15, sKey17, sKey18, sKey20, sKey22, sKey24, sKey25, sKey27, sKey29,
  414.                                          sKey2, sKey4, sKey7, sKey9, sKey11, sKey14, sKey16, sKey19, sKey21, sKey23, sKey26, sKey28]
  415.         //Сюда поместимм мувиклипы клавиш
  416.         private var _keys:Array = []
  417.         //Это таймер для автоматического проигрывания мелодии
  418.         private var _timer:Timer = new Timer( 350, 0 )
  419.         //Это счетчик для автоматического проигрывания мелодии
  420.         private var _tick:int = 0
  421.         //Это мелодия "В лесу родилась елочка"
  422.         private var _melody:Array = [[4],
  423.                                      [9],
  424.                                      [9],
  425.                                      [8],
  426.                                      [9],
  427.                                      [7],
  428.                                      [4],
  429.                                      [4],
  430.                                      [4],
  431.                                      [9],
  432.                                      [9],
  433.                                      [10],
  434.                                      [12],
  435.                                      [11],
  436.                                      [],
  437.                                      [11],
  438.                                      [5],
  439.                                      [5],
  440.                                      [10],
  441.                                      [10],
  442.                                      [9],
  443.                                      [8],
  444.                                      [7],
  445.                                      [4],
  446.                                      [9],
  447.                                      [9],
  448.                                      [8],
  449.                                      [9],
  450.                                      [7]]
  451.  
  452.         //Конструктор
  453.         public function Main() {
  454.             CreateKeyboard()
  455.             Init()
  456.         }
  457.  
  458.         //Инициализация
  459.         private function Init():void {
  460.             //Слушатель для таймера
  461.             _timer.addEventListener( TimerEvent.TIMER, KeyDown )
  462.             //Слушатель нажатия клавиш
  463.             stage.addEventListener( KeyboardEvent.KEY_DOWN, KeyboardControl )
  464.  
  465.             //Добавляем снег
  466.             var snow = new Snow( 565, 400 )
  467.             this.addChildAt( snow, 0 )
  468.  
  469.             //Добавляем задний фон
  470.             var background = new Background( 100, 100 );
  471.             background.width = 565
  472.             background.height = 400
  473.             this.addChildAt( background, 0 )
  474.         }
  475.  
  476.         //Функция нажатия клавиш
  477.         private function KeyboardControl( e:KeyboardEvent ):void {
  478.             switch( e.keyCode ) {
  479.                 case 90 :
  480.                     AutoClick( _keys[0] )
  481.                     break
  482.                 case 88 :
  483.                     AutoClick( _keys[1] )
  484.                     break
  485.                 case 67 :
  486.                     AutoClick( _keys[2] )
  487.                     break
  488.                 case 86 :
  489.                     AutoClick( _keys[3] )
  490.                     break
  491.                 case 66 :
  492.                     AutoClick( _keys[4] )
  493.                     break
  494.                 case 78 :
  495.                     AutoClick( _keys[5] )
  496.                     break
  497.                 case 77 :
  498.                     AutoClick( _keys[6] )
  499.                     break
  500.                 case 81 :
  501.                     AutoClick( _keys[7] )
  502.                     break
  503.                 case 87 :
  504.                     AutoClick( _keys[8] )
  505.                     break
  506.                 case 69 :
  507.                     AutoClick( _keys[9] )
  508.                     break
  509.                 case 82 :
  510.                     AutoClick( _keys[10] )
  511.                     break
  512.                 case 84 :
  513.                     AutoClick( _keys[11] )
  514.                     break
  515.                 case 89 :
  516.                     AutoClick( _keys[12] )
  517.                     break
  518.                 case 85 :
  519.                     AutoClick( _keys[13] )
  520.                     break
  521.                 case 73 :
  522.                     AutoClick( _keys[14] )
  523.                     break
  524.                 case 79 :
  525.                     AutoClick( _keys[15] )
  526.                     break
  527.                 case 80 :
  528.                     AutoClick( _keys[16] )
  529.                     break
  530.                 case 83 :
  531.                     AutoClick( _keys[17] )
  532.                     break
  533.                 case 68 :
  534.                     AutoClick( _keys[18] )
  535.                     break
  536.                 case 71 :
  537.                     AutoClick( _keys[19] )
  538.                     break
  539.                 case 72 :
  540.                     AutoClick( _keys[20] )
  541.                     break
  542.                 case 74 :
  543.                     AutoClick( _keys[21] )
  544.                     break
  545.                 case 50 :
  546.                     AutoClick( _keys[22] )
  547.                     break
  548.                 case 51 :
  549.                     AutoClick( _keys[23] )
  550.                     break
  551.                 case 53 :
  552.                     AutoClick( _keys[24] )
  553.                     break
  554.                 case 54 :
  555.                     AutoClick( _keys[25] )
  556.                     break
  557.                 case 55 :
  558.                     AutoClick( _keys[26] )
  559.                     break
  560.                 case 57 :
  561.                     AutoClick( _keys[27] )
  562.                     break
  563.                 case 48 :
  564.                     AutoClick( _keys[28] )
  565.                     break
  566.             }
  567.         }
  568.  
  569.         //Создание клавиш на сцене
  570.         private function CreateKeyboard():void {
  571.             //Буквенные обозначения каждой клавиши, которые соответствуют кнопкам на клавиатуре
  572.             var wChars:String = "ZXCVBNMQWERTYUIOP"
  573.             var bChars:String = "SDFGHJK234567890"
  574.  
  575.             for ( var i:int = 0; i < 17; i++ ) {
  576.                 var wKey:MovieClip = new WhiteKey()
  577.                 wKey.mouseChildren = false
  578.                 wKey.txt.text = wChars.charAt( i )
  579.                 wKey.fade_mc.alpha = 0
  580.                 wKey.buttonMode = true
  581.                 wKey.name = "key"
  582.                 this.addChild( wKey )
  583.                 _keys.push( wKey )
  584.                 wKey.x = 10 + ( i * 32 )
  585.                 wKey.y = 10
  586.             }
  587.  
  588.             var noKeys:Array = [2, 6, 9, 13]
  589.             for ( i = 0; i < 16; i++ ) {
  590.                 if ( noKeys.indexOf( i ) == -1 ) {
  591.                     var bKey:MovieClip = new BlackKey()
  592.                     bKey.mouseChildren = false
  593.                     bKey.txt.text = bChars.charAt( i )
  594.                     bKey.fade_mc.alpha = 0
  595.                     bKey.buttonMode = true
  596.                     bKey.name = "key"
  597.                     this.addChild( bKey )
  598.                     _keys.push( bKey )
  599.                     bKey.x = 31 + ( i * 32 )
  600.                     bKey.y = 10
  601.                 }
  602.             }
  603.  
  604.             this.addEventListener( MouseEvent.CLICK, Click )
  605.         }
  606.  
  607.         //Обработка кликов мыши на сцене
  608.         private function Click( e:MouseEvent ):void {
  609.             switch ( e.target.name ) {
  610.                 case "key" :
  611.                     Sound( _keysSounds[_keys.indexOf( e.target )] ).play()
  612.                     OnClickChangeColor( MovieClip( e.target ) )
  613.                     break
  614.  
  615.                 case "autoPlay_btn" :
  616.                     StartAutoPlay()
  617.                     break
  618.             }
  619.         }
  620.  
  621.         //Запуск автоматического проигрывания мелодии
  622.         private function StartAutoPlay():void {
  623.             _timer.reset()
  624.             _tick = 0
  625.             _timer.start()
  626.         }
  627.  
  628.         //Обработка автоматического нажатия клавиши во время автоматического проигрывания мелодии
  629.         private function KeyDown( e:TimerEvent ):void {
  630.             for each ( var i in _melody[_tick] ) {
  631.                 AutoClick( _keys[i] )
  632.             }
  633.             _tick++
  634.             if ( _tick == _melody.length ) {
  635.                 //_tick = 0
  636.                 _timer.stop()
  637.             }
  638.         }
  639.  
  640.         //Автоматическое нажатие клавиши во время автоматического проигрывания мелодии
  641.         private function AutoClick( key:MovieClip ):void {
  642.             Sound( _keysSounds[_keys.indexOf( key )] ).play()
  643.             OnClickChangeColor( MovieClip( key ) )
  644.         }
  645.  
  646.         //Подсветка нажатой клавиши синим цветом.
  647.         private function OnClickChangeColor( key:MovieClip ):void {
  648.             key.fade_mc.alpha = 0.5
  649.             TweenLite.to( key.fade_mc, 1, { alpha:0 } )
  650.         }
  651.     }
  652. }
  653. //-----------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement