neirao

Untitled

May 31st, 2015
317
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  
  3. 30/05/2015
  4. 02/04/2015
  5.  
  6. //EXEMPLO USO:
  7.  
  8. //add folder >> D:\_neirao\developer\appkit\air\as3
  9.  
  10.  
  11.  
  12. import com.neirao.ui.NavigatorNeirao;
  13. import com.greensock.easing.*; //trace(Elastic.easeInOut);//Object
  14.  
  15. //------[PERSONALIZADO]--------//
  16. var menu1: Menu = new Menu();
  17. var menu2: Menu = new Menu();
  18. var menu3: Menu = new Menu();
  19. var tab: Tab = new Tab();
  20. menu1.name = "menu1";
  21. menu2.name = "menu2";
  22. menu3.name = "menu3";
  23. //alvo,label..,varivel etc
  24. var menusList: Array = [{
  25.     alvo: menu1,label:"MENU 1"
  26. }, {
  27.     alvo: menu2,label:"MENU 2"
  28. }, {
  29.     alvo: menu3,label:"MENU 3"
  30. }];
  31.  
  32. menu1.gotoAndStop(1);
  33. menu2.gotoAndStop(2);
  34. menu3.gotoAndStop(3);
  35.  
  36. addChild(menu1);
  37. addChild(menu2);
  38. addChild(menu3);
  39. addChild(tab);
  40.  
  41. //------[PERSONALIZADO]--------//
  42.  
  43. var navigator: NavigatorNeirao = new NavigatorNeirao();
  44. navigator.Root=this;//usar root ja que este nao vai ser addaoStage!
  45.  
  46. //-------------------------------
  47. //opcional! >>
  48. //-------------------------------
  49. navigator.addEventListener("TWEEN_INICIADO", evento_INICIADO);
  50. navigator.addEventListener("TWEEN_PROGRESSO", evento_PROGRESSO);
  51. navigator.addEventListener("TWEEN_COMPLETO", evento_COMPLETO);
  52. //-------------------------------
  53. //opcional! >>
  54. //-------------------------------
  55. navigator.easeTipo=Elastic.easeInOut;
  56. navigator.autoHIDE_BTS = true;
  57. //navigator.modeHIDE= "visible";
  58. navigator.modeHIDE = "alpha";
  59. //-------------------------------
  60. navigator.AVANCAR_BT = tab.avancar_bt; //quais botoes de comando - opcionais!
  61. navigator.VOLTAR_BT = tab.voltar_bt;
  62. //-------------------------------
  63. //opcional! >>
  64. //-------------------------------
  65. //navigator.HEADER_TAB=tab;//cuida do children INDEX! //OPCIONAL
  66. //navigator.navEIXO_PX=20;//teste[ok]
  67. //navigator.navEIXO_PY=tab.height;//teste[ok]
  68. //-------------------------------
  69. navigator.ITENS_LIST = menusList;
  70. //navigator.showMenu(menu1);
  71. navigator.setup();
  72. navigator.showMenu(menu2);
  73. //navigator.showMenu(menu3);
  74. //-------------------------------
  75. stage.addEventListener(MouseEvent.MOUSE_DOWN, mdown);
  76.  
  77. function mdown(e: MouseEvent): void {
  78.     //trace(e.target.name);
  79.     if(e.target.name == "voltar_bt") {
  80.         //navigator.tweenmenu(menu2, "direita");//ok       
  81.         navigator.prevMenu();//ok todos
  82.         return;
  83.     }
  84.     if(e.target.name == "avancar_bt") {
  85.         //navigator.tweenmenu(menu1, "esquerda");//ok  
  86.         navigator.nextMenu();//ok todos
  87.         return;
  88.     }
  89. }
  90.  
  91. function evento_PROGRESSO(e: Event): void {
  92.     trace("EVENTO!!OK, PROGRESSO!!");
  93. }
  94.  
  95. function evento_COMPLETO(e: Event): void {
  96.     trace("EVENTO!!OK, FINALMENTE!!"); 
  97.     trace(menusList[navigator.selectedIndex].label)
  98. }
  99.  
  100.  
  101.  
  102. //-----------------------------------------
  103.  
  104. //-----------------------------------------
  105.  
  106.  
  107.  
  108. */
  109.  
  110. package com.neirao.ui {
  111.  
  112.     import com.greensock.TweenLite;
  113.     //import com.greensock.easing.CustomEase;
  114.     import com.greensock.easing.*; //trace(Elastic.easeInOut);//Object
  115.  
  116.  
  117.     //NÃO PRECISA...VDP
  118.     import flash.events.EventDispatcher;
  119.     import flash.events.IEventDispatcher;
  120.     import flash.events.Event;
  121.  
  122.     import flash.display.MovieClip;
  123.     import flash.display.Sprite;
  124.     import flash.display.DisplayObject;
  125.  
  126.     //NÃO PRECISA EXTENDS A EVENTDISPATCHER NAO!! MAS PRECISA EXTENDES PELO MENOS A "SPRITE"
  127.     public class NavigatorNeirao extends Sprite {
  128.  
  129.         public var Root: * ; //usar root ja que este nao vai ser addaoStage!
  130.  
  131.         public var ITENS_LIST: Array = null; //ARRAY LIST
  132.  
  133.         public var MENU_C: uint; //uso opcional caso do tween sequencia!
  134.         public var MENU_ATUAL: MovieClip;
  135.         public var MENU_PROXIMO: MovieClip;
  136.  
  137.         public var AVANCAR_BT: DisplayObject = null; //por fora define os botoes
  138.         public var VOLTAR_BT: DisplayObject = null; //por fora define os botoes
  139.         public var autoHIDE_BTS: Boolean = false; //true;//esconde os botoes no MIN E MAX.
  140.         public var modeHIDE: String = "alpha"; //"alpha","visible"
  141.         public var alphaV: Number = .25;
  142.  
  143.         public var navW: uint = 0; //largura do stage ou definido!
  144.         public var navH: uint = 0;
  145.  
  146.         public var navEIXO_PX: int = 0; //para onde vai o atual
  147.         public var navEIXO_PY: int = 0; //para onde vai o atual
  148.  
  149.         public var navPX: int = 0; //para onde vai o anterior
  150.         public var navPY: int = 0; //para onde vai o anterior
  151.  
  152.         public var easeTipo: Object = null; //Elastic.easeInOut
  153.         public var tweenEmAndamento: Boolean = false;
  154.  
  155.         public var TWEEN_TIME: Number = .5; // 3;//.2; //.5;2;//.5;
  156.        
  157.         public var evento_iniciado: String = "TWEEN_INICIADO";
  158.         public var evento_progresso: String = "TWEEN_PROGRESSO";
  159.         public var evento_completo: String = "TWEEN_COMPLETO";
  160.        
  161.         public var selectedIndex:int=-1;//padronizar
  162.        
  163.         public var HEADER_TAB: MovieClip = null; //para usar o children index!
  164.  
  165.  
  166.         public function NavigatorNeirao() {
  167.             trace("[SCREEN NAVIGATOR NEIRAO]");
  168.             //this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
  169.         }
  170.  
  171.         protected function addedToStageHandler(e: Event): void {
  172.             trace("addedToStageHandler");
  173.             this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
  174.  
  175.             setup();
  176.         }
  177.  
  178.         public function setup(): void {
  179.             trace("[SCREEN NAVIGATOR NEIRAO][SETUP]");
  180.             trace("ANTES navW,navH:", navW, navH);
  181.             if(navW <= 0) {
  182.                 navW = Root.stage.stageWidth; //usar root ja que este nao vai ser addaoStage!
  183.             }
  184.             if(navH <= 0) {
  185.                 navH = Root.stage.stageHeight; //usar root ja que este nao vai ser addaoStage!
  186.             }
  187.             trace("DEPOIS navW,navH:", navW, navH);
  188.         }
  189.         //next menu ou screens!
  190.         public function prevMenu(): void {
  191.             if(MENU_C > 0) {
  192.                 tweenmenu(ITENS_LIST[MENU_C - 1].alvo, "direita");
  193.             }
  194.         }
  195.         public function nextMenu(): void {
  196.             if(MENU_C < ITENS_LIST.length - 1) {
  197.                 tweenmenu(ITENS_LIST[MENU_C + 1].alvo, "esquerda");
  198.             }
  199.         }
  200.         //public function showMenu(alvo: MovieClip = null, _ITENS_LIST: Array = null) {
  201.         public function showMenu(alvo: MovieClip = null) {
  202.             if(alvo == null || ITENS_LIST == null) {
  203.                 return;
  204.             }
  205.             //@new 25/05/2015 -  forçar listener rapido, abaixo o final!
  206.             //dispatchEvent(new Event(evento_iniciado)); //OKKK TAMBEM             
  207.             var i: uint;
  208.             for(i = 0; i < ITENS_LIST.length; i++) {
  209.                 if(ITENS_LIST[i].alvo == alvo) {
  210.                     //ITENS_LIST[i].alvo.gotoAndStop("on");     //ITENS_LIST[i].variavel=ITENS_LIST[i].label;      
  211.                     ITENS_LIST[i].alvo.visible = true;
  212.                     MENU_ATUAL = alvo;
  213.                     MENU_C = i;
  214.                     selectedIndex=i;//padronizar!
  215.                 } else {
  216.                     //ITENS_LIST[i].alvo.gotoAndStop("off");
  217.                     ITENS_LIST[i].alvo.visible = false;
  218.                 }
  219.             }
  220.             //para sequencial - opcional temp -ESCONDE OS BTS SE NÃO PUDER AVANCAR OU VOLTAR
  221.             if(autoHIDE_BTS && AVANCAR_BT != null && VOLTAR_BT != null) {
  222.                 if(MENU_C <= 0) {
  223.                     //tab.voltar_bt.visible = false; VOLTAR_BT.enabled = false;
  224.                     if(modeHIDE == "visible") {
  225.                         VOLTAR_BT.visible = false;
  226.                     }
  227.                     if(modeHIDE == "alpha") {
  228.                         VOLTAR_BT.alpha = alphaV;    
  229.                     }
  230.                 } else {
  231.                     //tab.voltar_bt.visible = true;
  232.                     if(modeHIDE == "visible") {
  233.                         VOLTAR_BT.visible = true;
  234.                     }
  235.                     if(modeHIDE == "alpha") {
  236.                         VOLTAR_BT.alpha = 1;
  237.                     }
  238.                 }
  239.  
  240.                 if(MENU_C >= ITENS_LIST.length - 1) {
  241.                     //tab.avancar_bt.visible = false;
  242.                     if(modeHIDE == "visible") {
  243.                         AVANCAR_BT.visible = false;
  244.                     }
  245.                     if(modeHIDE == "alpha") {
  246.                         AVANCAR_BT.alpha = alphaV;
  247.                     }
  248.                 } else {
  249.                     //tab.avancar_bt.visible = true;
  250.                     if(modeHIDE == "visible") {
  251.                         AVANCAR_BT.visible = true;
  252.                     }
  253.                     if(modeHIDE == "alpha") {
  254.                         AVANCAR_BT.alpha = 1;
  255.                     }
  256.                 }
  257.             }
  258.             //@new 25/05/2015 -  forçar listener rapido, abaixo o final!
  259.             //dispatchEvent(new Event(evento_completo)); //OKKK TAMBEM
  260.         }
  261.  
  262.         public function tweenmenu(gomenu: MovieClip = null, direcao: String = null): void {
  263.             if(gomenu == null || direcao == null || gomenu == MENU_ATUAL) {
  264.                 //perfeito, nao deixa repetir o menu!! > gomenu == MENU_ATUAL
  265.                 return;
  266.             }
  267.             if(tweenEmAndamento) {
  268.                 return;
  269.             }
  270.             tweenEmAndamento = true;
  271.             dispatchEvent(new Event(evento_iniciado)); //OKKK TAMBEM
  272.             gomenu.visible = true;
  273.             MENU_PROXIMO = gomenu; //memoriza quem é o vai virar o atual
  274.             //@ dicas
  275.             //{container}.setChildIndex({clickedPhoto},{container}.numChildren);
  276.             //parent.setChildIndex(this, parent.numChildren);
  277.            
  278.             //setChildIndex(HEADER_TAB, (numChildren - 1));//tab sempre frente! se precisar..      
  279.            
  280.             //setChildIndex(gomenu, (tab.numChildren - 1)); //OK ORIGINAL
  281.             //VOLTAR_BT
  282.             if(HEADER_TAB != null) {
  283.                 HEADER_TAB.parent.setChildIndex(gomenu, (HEADER_TAB.numChildren - 1));
  284.                 //setChildIndex(gomenu, (HEADER_TAB.numChildren - 1));
  285.             } else {
  286.                 trace("TAB nao definido! complicacao no CHILDREN INDEX!");
  287.                 //gomenu.parent.setChildIndex(gomenu, (gomenu.parent.numChildren - 1));//ok, tudo na frente                
  288.                 if(VOLTAR_BT!=null){
  289.                     Root.setChildIndex(gomenu, (VOLTAR_BT.parent.numChildren - 1));//OK
  290.                 }else{
  291.                     Root.setChildIndex(gomenu, (Root.numChildren - 1));
  292.                 }              
  293.                 //HEADER_TAB.parent.setChildIndex(HEADER_TAB, (HEADER_TAB.parent.numChildren - 1));//tab sempre frente! se precisar..
  294.             }
  295.             //this.parent.setChildIndex(this, this.parent.numChildren-1);
  296.             if(direcao == "esquerda") {
  297.                 MENU_PROXIMO.x = navW; //stage.stageWidth; //envia para o lado direito o prox menu
  298.                 navPX = -navW; //stage.stageWidth;
  299.             }
  300.             if(direcao == "direita") {
  301.                 MENU_PROXIMO.x = -navW; //stage.stageWidth; //envia para o lado esq o prox menu
  302.                 //navPX = -navW; //stage.stageWidth;
  303.                 navPX = navW; //stage.stageWidth;//ok, segue COLADO NO OUTRO PRO LADO CERTO!! @30/05/2015
  304.             }
  305.             //modo mais simples possivel, sem EASE e abaixo com ease!
  306.             if(easeTipo == null) {
  307.                 //import com.greensock.*;
  308.                 TweenLite.to(MENU_PROXIMO, TWEEN_TIME, {
  309.                     x: navEIXO_PX,
  310.                     y: navEIXO_PY,
  311.                     onComplete: fimTween,onUpdate:progressTween
  312.                 });
  313.                 TweenLite.to(MENU_ATUAL, TWEEN_TIME, {
  314.                     x: navPX,
  315.                     y: navPY
  316.                 });
  317.             } else {
  318.                 TweenLite.to(MENU_PROXIMO, TWEEN_TIME, {
  319.                     x: navEIXO_PX,
  320.                     y: navEIXO_PY,
  321.                     ease: easeTipo,
  322.                     onComplete: fimTween,onUpdate:progressTween
  323.                 });
  324.  
  325.                 TweenLite.to(MENU_ATUAL, TWEEN_TIME, {
  326.                     x: navEIXO_PX,
  327.                     y: navEIXO_PY,
  328.                     ease: easeTipo
  329.                 });
  330.             }
  331.         }
  332.         // onUpdate:progressTween});
  333.         public function progressTween():void{
  334.             // tl1.progress(tl1Prog.a);
  335.             //trace("tween progress!!");
  336.             dispatchEvent(new Event(evento_progresso)); //OKKK TAMBEM
  337.         }
  338.         public function fimTween(): void {
  339.             trace("[FIM TWEEN]");
  340.             MENU_ATUAL = MENU_PROXIMO;
  341.             showMenu(MENU_ATUAL); //esconde os não visiveis, ITENS_LIST
  342.             tweenEmAndamento = false;
  343.             dispatchEvent(new Event(evento_completo)); //OKKK TAMBEM
  344.         }
  345.         public function destroy(): void {
  346.             //
  347.         }
  348.  
  349.     }
  350.  
  351. }
RAW Paste Data