Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 30/05/2015
- 02/04/2015
- //EXEMPLO USO:
- //add folder >> D:\_neirao\developer\appkit\air\as3
- import com.neirao.ui.NavigatorNeirao;
- import com.greensock.easing.*; //trace(Elastic.easeInOut);//Object
- //------[PERSONALIZADO]--------//
- var menu1: Menu = new Menu();
- var menu2: Menu = new Menu();
- var menu3: Menu = new Menu();
- var tab: Tab = new Tab();
- menu1.name = "menu1";
- menu2.name = "menu2";
- menu3.name = "menu3";
- //alvo,label..,varivel etc
- var menusList: Array = [{
- alvo: menu1,label:"MENU 1"
- }, {
- alvo: menu2,label:"MENU 2"
- }, {
- alvo: menu3,label:"MENU 3"
- }];
- menu1.gotoAndStop(1);
- menu2.gotoAndStop(2);
- menu3.gotoAndStop(3);
- addChild(menu1);
- addChild(menu2);
- addChild(menu3);
- addChild(tab);
- //------[PERSONALIZADO]--------//
- var navigator: NavigatorNeirao = new NavigatorNeirao();
- navigator.Root=this;//usar root ja que este nao vai ser addaoStage!
- //-------------------------------
- //opcional! >>
- //-------------------------------
- navigator.addEventListener("TWEEN_INICIADO", evento_INICIADO);
- navigator.addEventListener("TWEEN_PROGRESSO", evento_PROGRESSO);
- navigator.addEventListener("TWEEN_COMPLETO", evento_COMPLETO);
- //-------------------------------
- //opcional! >>
- //-------------------------------
- navigator.easeTipo=Elastic.easeInOut;
- navigator.autoHIDE_BTS = true;
- //navigator.modeHIDE= "visible";
- navigator.modeHIDE = "alpha";
- //-------------------------------
- navigator.AVANCAR_BT = tab.avancar_bt; //quais botoes de comando - opcionais!
- navigator.VOLTAR_BT = tab.voltar_bt;
- //-------------------------------
- //opcional! >>
- //-------------------------------
- //navigator.HEADER_TAB=tab;//cuida do children INDEX! //OPCIONAL
- //navigator.navEIXO_PX=20;//teste[ok]
- //navigator.navEIXO_PY=tab.height;//teste[ok]
- //-------------------------------
- navigator.ITENS_LIST = menusList;
- //navigator.showMenu(menu1);
- navigator.setup();
- navigator.showMenu(menu2);
- //navigator.showMenu(menu3);
- //-------------------------------
- stage.addEventListener(MouseEvent.MOUSE_DOWN, mdown);
- function mdown(e: MouseEvent): void {
- //trace(e.target.name);
- if(e.target.name == "voltar_bt") {
- //navigator.tweenmenu(menu2, "direita");//ok
- navigator.prevMenu();//ok todos
- return;
- }
- if(e.target.name == "avancar_bt") {
- //navigator.tweenmenu(menu1, "esquerda");//ok
- navigator.nextMenu();//ok todos
- return;
- }
- }
- function evento_PROGRESSO(e: Event): void {
- trace("EVENTO!!OK, PROGRESSO!!");
- }
- function evento_COMPLETO(e: Event): void {
- trace("EVENTO!!OK, FINALMENTE!!");
- trace(menusList[navigator.selectedIndex].label)
- }
- //-----------------------------------------
- //-----------------------------------------
- */
- package com.neirao.ui {
- import com.greensock.TweenLite;
- //import com.greensock.easing.CustomEase;
- import com.greensock.easing.*; //trace(Elastic.easeInOut);//Object
- //NÃO PRECISA...VDP
- import flash.events.EventDispatcher;
- import flash.events.IEventDispatcher;
- import flash.events.Event;
- import flash.display.MovieClip;
- import flash.display.Sprite;
- import flash.display.DisplayObject;
- //NÃO PRECISA EXTENDS A EVENTDISPATCHER NAO!! MAS PRECISA EXTENDES PELO MENOS A "SPRITE"
- public class NavigatorNeirao extends Sprite {
- public var Root: * ; //usar root ja que este nao vai ser addaoStage!
- public var ITENS_LIST: Array = null; //ARRAY LIST
- public var MENU_C: uint; //uso opcional caso do tween sequencia!
- public var MENU_ATUAL: MovieClip;
- public var MENU_PROXIMO: MovieClip;
- public var AVANCAR_BT: DisplayObject = null; //por fora define os botoes
- public var VOLTAR_BT: DisplayObject = null; //por fora define os botoes
- public var autoHIDE_BTS: Boolean = false; //true;//esconde os botoes no MIN E MAX.
- public var modeHIDE: String = "alpha"; //"alpha","visible"
- public var alphaV: Number = .25;
- public var navW: uint = 0; //largura do stage ou definido!
- public var navH: uint = 0;
- public var navEIXO_PX: int = 0; //para onde vai o atual
- public var navEIXO_PY: int = 0; //para onde vai o atual
- public var navPX: int = 0; //para onde vai o anterior
- public var navPY: int = 0; //para onde vai o anterior
- public var easeTipo: Object = null; //Elastic.easeInOut
- public var tweenEmAndamento: Boolean = false;
- public var TWEEN_TIME: Number = .5; // 3;//.2; //.5;2;//.5;
- public var evento_iniciado: String = "TWEEN_INICIADO";
- public var evento_progresso: String = "TWEEN_PROGRESSO";
- public var evento_completo: String = "TWEEN_COMPLETO";
- public var selectedIndex:int=-1;//padronizar
- public var HEADER_TAB: MovieClip = null; //para usar o children index!
- public function NavigatorNeirao() {
- trace("[SCREEN NAVIGATOR NEIRAO]");
- //this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
- }
- protected function addedToStageHandler(e: Event): void {
- trace("addedToStageHandler");
- this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
- setup();
- }
- public function setup(): void {
- trace("[SCREEN NAVIGATOR NEIRAO][SETUP]");
- trace("ANTES navW,navH:", navW, navH);
- if(navW <= 0) {
- navW = Root.stage.stageWidth; //usar root ja que este nao vai ser addaoStage!
- }
- if(navH <= 0) {
- navH = Root.stage.stageHeight; //usar root ja que este nao vai ser addaoStage!
- }
- trace("DEPOIS navW,navH:", navW, navH);
- }
- //next menu ou screens!
- public function prevMenu(): void {
- if(MENU_C > 0) {
- tweenmenu(ITENS_LIST[MENU_C - 1].alvo, "direita");
- }
- }
- public function nextMenu(): void {
- if(MENU_C < ITENS_LIST.length - 1) {
- tweenmenu(ITENS_LIST[MENU_C + 1].alvo, "esquerda");
- }
- }
- //public function showMenu(alvo: MovieClip = null, _ITENS_LIST: Array = null) {
- public function showMenu(alvo: MovieClip = null) {
- if(alvo == null || ITENS_LIST == null) {
- return;
- }
- //@new 25/05/2015 - forçar listener rapido, abaixo o final!
- //dispatchEvent(new Event(evento_iniciado)); //OKKK TAMBEM
- var i: uint;
- for(i = 0; i < ITENS_LIST.length; i++) {
- if(ITENS_LIST[i].alvo == alvo) {
- //ITENS_LIST[i].alvo.gotoAndStop("on"); //ITENS_LIST[i].variavel=ITENS_LIST[i].label;
- ITENS_LIST[i].alvo.visible = true;
- MENU_ATUAL = alvo;
- MENU_C = i;
- selectedIndex=i;//padronizar!
- } else {
- //ITENS_LIST[i].alvo.gotoAndStop("off");
- ITENS_LIST[i].alvo.visible = false;
- }
- }
- //para sequencial - opcional temp -ESCONDE OS BTS SE NÃO PUDER AVANCAR OU VOLTAR
- if(autoHIDE_BTS && AVANCAR_BT != null && VOLTAR_BT != null) {
- if(MENU_C <= 0) {
- //tab.voltar_bt.visible = false; VOLTAR_BT.enabled = false;
- if(modeHIDE == "visible") {
- VOLTAR_BT.visible = false;
- }
- if(modeHIDE == "alpha") {
- VOLTAR_BT.alpha = alphaV;
- }
- } else {
- //tab.voltar_bt.visible = true;
- if(modeHIDE == "visible") {
- VOLTAR_BT.visible = true;
- }
- if(modeHIDE == "alpha") {
- VOLTAR_BT.alpha = 1;
- }
- }
- if(MENU_C >= ITENS_LIST.length - 1) {
- //tab.avancar_bt.visible = false;
- if(modeHIDE == "visible") {
- AVANCAR_BT.visible = false;
- }
- if(modeHIDE == "alpha") {
- AVANCAR_BT.alpha = alphaV;
- }
- } else {
- //tab.avancar_bt.visible = true;
- if(modeHIDE == "visible") {
- AVANCAR_BT.visible = true;
- }
- if(modeHIDE == "alpha") {
- AVANCAR_BT.alpha = 1;
- }
- }
- }
- //@new 25/05/2015 - forçar listener rapido, abaixo o final!
- //dispatchEvent(new Event(evento_completo)); //OKKK TAMBEM
- }
- public function tweenmenu(gomenu: MovieClip = null, direcao: String = null): void {
- if(gomenu == null || direcao == null || gomenu == MENU_ATUAL) {
- //perfeito, nao deixa repetir o menu!! > gomenu == MENU_ATUAL
- return;
- }
- if(tweenEmAndamento) {
- return;
- }
- tweenEmAndamento = true;
- dispatchEvent(new Event(evento_iniciado)); //OKKK TAMBEM
- gomenu.visible = true;
- MENU_PROXIMO = gomenu; //memoriza quem é o vai virar o atual
- //@ dicas
- //{container}.setChildIndex({clickedPhoto},{container}.numChildren);
- //parent.setChildIndex(this, parent.numChildren);
- //setChildIndex(HEADER_TAB, (numChildren - 1));//tab sempre frente! se precisar..
- //setChildIndex(gomenu, (tab.numChildren - 1)); //OK ORIGINAL
- //VOLTAR_BT
- if(HEADER_TAB != null) {
- HEADER_TAB.parent.setChildIndex(gomenu, (HEADER_TAB.numChildren - 1));
- //setChildIndex(gomenu, (HEADER_TAB.numChildren - 1));
- } else {
- trace("TAB nao definido! complicacao no CHILDREN INDEX!");
- //gomenu.parent.setChildIndex(gomenu, (gomenu.parent.numChildren - 1));//ok, tudo na frente
- if(VOLTAR_BT!=null){
- Root.setChildIndex(gomenu, (VOLTAR_BT.parent.numChildren - 1));//OK
- }else{
- Root.setChildIndex(gomenu, (Root.numChildren - 1));
- }
- //HEADER_TAB.parent.setChildIndex(HEADER_TAB, (HEADER_TAB.parent.numChildren - 1));//tab sempre frente! se precisar..
- }
- //this.parent.setChildIndex(this, this.parent.numChildren-1);
- if(direcao == "esquerda") {
- MENU_PROXIMO.x = navW; //stage.stageWidth; //envia para o lado direito o prox menu
- navPX = -navW; //stage.stageWidth;
- }
- if(direcao == "direita") {
- MENU_PROXIMO.x = -navW; //stage.stageWidth; //envia para o lado esq o prox menu
- //navPX = -navW; //stage.stageWidth;
- navPX = navW; //stage.stageWidth;//ok, segue COLADO NO OUTRO PRO LADO CERTO!! @30/05/2015
- }
- //modo mais simples possivel, sem EASE e abaixo com ease!
- if(easeTipo == null) {
- //import com.greensock.*;
- TweenLite.to(MENU_PROXIMO, TWEEN_TIME, {
- x: navEIXO_PX,
- y: navEIXO_PY,
- onComplete: fimTween,onUpdate:progressTween
- });
- TweenLite.to(MENU_ATUAL, TWEEN_TIME, {
- x: navPX,
- y: navPY
- });
- } else {
- TweenLite.to(MENU_PROXIMO, TWEEN_TIME, {
- x: navEIXO_PX,
- y: navEIXO_PY,
- ease: easeTipo,
- onComplete: fimTween,onUpdate:progressTween
- });
- TweenLite.to(MENU_ATUAL, TWEEN_TIME, {
- x: navEIXO_PX,
- y: navEIXO_PY,
- ease: easeTipo
- });
- }
- }
- // onUpdate:progressTween});
- public function progressTween():void{
- // tl1.progress(tl1Prog.a);
- //trace("tween progress!!");
- dispatchEvent(new Event(evento_progresso)); //OKKK TAMBEM
- }
- public function fimTween(): void {
- trace("[FIM TWEEN]");
- MENU_ATUAL = MENU_PROXIMO;
- showMenu(MENU_ATUAL); //esconde os não visiveis, ITENS_LIST
- tweenEmAndamento = false;
- dispatchEvent(new Event(evento_completo)); //OKKK TAMBEM
- }
- public function destroy(): void {
- //
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement