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;
}
}
_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)
-
ScrollBar.zip (6.88K)
Number of downloads: 412

Help














