..:: MX Studio Fóruns ::..: ScrollBar para MovieClips e TextFields - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

ScrollBar para MovieClips e TextFields Dúvidas mais frequentes e FLA

#1 User is offline   hufersil 

  • Group: Moderadores
  • Posts: 1265
  • Joined: 15-January 04

Posted 12 February 2007 - 06:18 PM

Link do tutorial:
http://www.mxstudio.com.br/views.tutorial....d=3&aid=650

AS
// coloca no tamanho normal
  _xscale = _yscale = 100;
  // pode ser um movieclip ou um textfield
  var alvo = _parent[alvo];
  // posição inicial do movieclip em y
  var sy:Number = alvo._y;
  // altera o tamanho da barra
  track._height = track_height;
  // coloca o botão de baixo abaixo da barra
  btn_baixo._y = track._y + track._height;
  // tira a maozinha dos botões
  btn_baixo.useHandCursor = btn_cima.useHandCursor = pan.useHandCursor = false;
 
  // mínimo em _y q o pan pode ir
  var miny:Number = Math.round( track._y );
  // máximo em _y q o pan pode ir
  var maxy:Number = Math.round( track._y + track._height - pan._height );
 
  // quando o cara pressionar o botão de cima
  btn_cima.onPress = function () {
     subindo = true;
     descendo = false;
  }
  // quando tirar o mouse
  btn_cima.onRelease = btn_cima.onReleaseOutside = function () {
     subindo = descendo = false;
  }
  // quando o cara pressionar o botão de baixo
  btn_baixo.onPress = function () {
     subindo = false;
     descendo = true;
  }
  // quando tirar o mouse
  btn_baixo.onRelease = btn_baixo.onReleaseOutside = function () {
     subindo = descendo = false;
  }
 
  // quando pressionar o pan
  pan.onPress = function () {
     // inicia o arrastamento
     startDrag(this,false,this._x,miny,this._x,maxy);
  }
 
  // quando soltar o mouse
  pan.onRelease = pan.onReleaseOutside = function () {
     // para o arrastamento
     stopDrag();
  }
 
  // cria o onEnterFrame
  this.onEnterFrame = function () {
     // se estiver subindo
     if(subindo) {
        // se não estiver a ponto de ir além do que pode
        if(pan._y - 1 > miny) {
           pan._y--;
        } else {
           pan._y = miny;
        }
     }
     // se estiver descendo
     if(descendo) {
        // se não estiver a ponto de ir além do que pode
        if(pan._y + 1 < maxy) {
           pan._y++;
        } else {
           pan._y = maxy;
        }
     }
     // faz um switch para saber qual o tipo de objeto que estamos usando
     switch(typeof(alvo)) {
        // se for um movieclip
        case "movieclip":
        // Calcula
        var s:Number = ((pan._y-miny)/(maxy-miny))*100;
        var p:Number = (alvo._height - mascara)/100;
        // move o objeto
        alvo._y = sy - (p*s);
        break;
        // se for um TextField (padrão)
        default:
        // cacula
        var s:Number = ((pan._y-miny)/(maxy-miny))*100;
        var p:Number = alvo.maxscroll/100;
        // move o objeto
        alvo.scroll = p * s;
        break;
     }
  }
// coloca no tamanho normal
_xscale = _yscale = 100;
// pode ser um movieclip ou um textfield
var alvo = _parent[alvo];
// posição inicial do movieclip em y
var sy:Number = alvo._y;
// altera o tamanho da barra
track._height = track_height;
// coloca o botão de baixo abaixo da barra
btn_baixo._y = track._y + track._height;
// tira a maozinha dos botões
btn_baixo.useHandCursor = btn_cima.useHandCursor = pan.useHandCursor = false;

// mínimo em _y q o pan pode ir
var miny:Number = Math.round( track._y );
// máximo em _y q o pan pode ir
var maxy:Number = Math.round( track._y + track._height - pan._height );

// quando o cara pressionar o botão de cima
btn_cima.onPress = function () {
subindo = true;
descendo = false;
}
// quando tirar o mouse
btn_cima.onRelease = btn_cima.onReleaseOutside = function () {
subindo = descendo = false;
}
// quando o cara pressionar o botão de baixo
btn_baixo.onPress = function () {
subindo = false;
descendo = true;
}
// quando tirar o mouse
btn_baixo.onRelease = btn_baixo.onReleaseOutside = function () {
subindo = descendo = false;
}

// quando pressionar o pan
pan.onPress = function () {
// inicia o arrastamento
startDrag(this,false,this._x,miny,this._x,maxy);
}

// quando soltar o mouse
pan.onRelease = pan.onReleaseOutside = function () {
// para o arrastamento
stopDrag();
}

// cria o onEnterFrame
this.onEnterFrame = function () {
// se estiver subindo
if(subindo) {
// se não estiver a ponto de ir além do que pode
if(pan._y - 1 > miny) {
pan._y--;
} else {
pan._y = miny;
}
}
// se estiver descendo
if(descendo) {
// se não estiver a ponto de ir além do que pode
if(pan._y + 1 < maxy) {
pan._y++;
} else {
pan._y = maxy;
}
}
// faz um switch para saber qual o tipo de objeto que estamos usando
switch(typeof(alvo)) {
// se for um movieclip
case "movieclip":
// Calcula
var s:Number = ((pan._y-miny)/(maxy-miny))*100;
var p:Number = (alvo._height - mascara)/100;
// move o objeto
alvo._y = sy - (p*s);
break;
// se for um TextField (padrão)
default:
// cacula
var s:Number = ((pan._y-miny)/(maxy-miny))*100;
var p:Number = alvo.maxscroll/100;
// move o objeto
alvo.scroll = p * s;
break;
}
}


P: por que meu textfield não se mexe?
R: O nome que deve ser informado no componente é o nome de instância, e não o nome de variável.

P: já refiz e fiz o tutorial e não funcionou. O que há de errado?
R: Isso depende de vários fatores: se exatamente o código está correto, se os nomes dos objetos que compões o scrollbar estão corretos e posicionados como indicado, se nomeou corretamente os objetos alvos...

P: Porque quando digito um conteúdo muito extenso no meu textfield ele não fica com o tamanho fixo, mas se redimensiona conforme digito?
R: A propriedade scrollable está setada como off. Clique com o botão direito sobre seu textfield e clique na opção scrollable para habilita-la.

P:No flash 8 não há essa opção pra converter mc em componente...
R: Olhe direito. Clique com o botão direito no objeto na biblioteca (library) e escolha a opção Component Definition. Após definir ao menos um parametro no movie clip ele aparecerá com o ícone de componente na biblioteca

P: Como faço para aumentar ou diminuir a velocidade que o "PAN" se move ao clicar nas setas?
R: Na linha onde tem pan._y--; coloque pan._y -= 2; onde tem pan._y++; coloque pan._y+=2; Caso queira mais rápido, troque o 2 pela velocidade desejada

Attached File(s)


0

#2 User is offline   andregp 

  • Group: Membros
  • Posts: 162
  • Joined: 09-May 05

Posted 01 March 2007 - 12:18 PM

Qual seria a versão horizontal dele?
0

#3 User is offline   drop13 

  • Group: Membros
  • Posts: 79
  • Joined: 19-April 05

Posted 01 November 2007 - 12:53 PM

teria como disponibilizar o .FLA pra flash 8??
estou com problemas no scroll e nao sei como resolvelos..... o drag funciona, ms o texto nao corre a tela..fica parado... ou seja, nao consegui relacionar o scroll com o conteudo.

ESTOU DISPONIBILIZANDO MEU TESTE PARA QUE POSSAM ENTENDER!!
link

abracos


0

#4 User is offline   DGC 

  • Group: Membros
  • Posts: 12
  • Joined: 28-January 08

Posted 28 January 2008 - 01:38 PM

O arquivo anexado .zip está corrompido.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)