Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ricardo Günter

Barra de Rolagem em Flash

Recommended Posts

BARRA DE ROLAGEM, NÃO FUNCIONA!!!

 

Ola pessoal, estou aqui para pedir uma super ajuda!

Preciso fazer um site totalmente em Flash, no entanto meu site é muito

vertical em alguns momentos, preciso fazer uma Barra de Rolagem ou Scroll,

como quiser, que exerça a mesma função da barra de rolagem do navegador,

só que em flash e personalizada.

 

Ja pesquisei bastante nesse forum, mas não encontrei algo completo, sobre esse assunto.

Por isso descidi fazer começa a minha barra, a partir de outro elemplo muito citado aqui

nesse forum, o de Classe MDScroll e misturando com o de Layout Liquido.

 

Mas seguinte, a minha barra não ficou completa, esta com alguns probleminhas, por isso

preciso muito da ajuda de vocês, vou colocar os AS aqui e tbm vou disponibilizar os arquivos.

 

Os aquivos estão aqui: .FLA .AS

 

 

ACTION CONTIDA NO .FLA

CODE
Stage.scaleMode = 'noScale';

Stage.align = 'TL';

stop;

 

var scrollMc = new MDScroll(rMovie,foto_mc,mask);

scrollMc.init();

 

//Função genérica para posicionar os elementos

function Liquido():Void {

 

//Tamanho atual do Stage

var sh = new Number(Stage.height);

var sw = new Number(Stage.width);

 

this.mask._width = Math.floor(sw);

this.mask._height = Math.floor(sh);

this.foto_mc._x = Math.floor(sw / 2) ;

//this.foto_mc._y = "0"

 

this.rMovie.fundo_mc._x = Math.floor(sw - this.rMovie.fundo_mc._width);

this.rMovie.fundo_mc._y = Math.floor(this.rMovie.sobe._height);

this.rMovie.fundo_mc._height = Math.floor(sh - this.rMovie.desce._height * 2);

//this.rMovie.fundo_mc._width = "20"

 

//Ajusta a barra direita

this.rMovie.drag_mc._x = Math.floor(sw - this.rMovie.drag_mc._width);

this.rMovie.drag_mc._y = Math.floor(this.rMovie.sobe._height);

//this.rMovie.drag_mc._height = Math.floor(sh);

//this.rMovie.drag_mc._width = "20"

 

//Ajusta o botão da rolagem da direita e esquerda topo

this.rMovie.sobe._x = Math.floor(sw - this.rMovie.sobe._height);

this.rMovie.sobe._y = "0";

 

//Ajusta o botão da rolagem da direita e esquerda bottom

this.rMovie.desce._x = Math.floor(sw - this.rMovie.sobe._height);

this.rMovie.desce._y = Math.floor(sh);

 

};

 

//Listener para o Stage

stageList = new Object();

stageList.onResize = function():Void {

Liquido();

};

 

Stage.addListener(stageList);

 

//Posicionar os elementos uma primeira vez

Liquido();

 

ACTION CONTIDA NO .AS

CODE
/*

Class MDScroll - by Maxwell Dayvson (www.dayvson.com)

 

bugs/reports - dayvson@gmail.com

 

constructor:

new MDScroll(MovieClip_Rolagem,Conteudo,mask);

 

methods

init

init(true) --> Para usar scroll com TextField

 

 

usage:

var scrollMc = new MDScroll(rMovie,conteudo_mc,mask);

scrollMc.init();

//------- OU -------

var scrollTxt = new MDScroll(rTxt,c_txt,null);

scrollTxt.init(true);

 

 

 

function Liquido():Void {

 

var sh = new Number(Stage.height);

var sw = new Number(Stage.width);

};

*/

import mx.effects.Tween;

dynamic class MDScroll

{

private var _container:MovieClip;

private var _mask:MovieClip;

private var _scroll:MovieClip;

private var _max:Number;

private var _yini:Number;

private var _type:Boolean;

 

//Função 1

function MDScroll(rolagem,container,mascara)

{

_container = container;

_mask = mascara;

_scroll = rolagem;

_scroll.drag_mc.useHandCursor = _scroll.fundo_mc.useHandCursor = false;

_scroll.sobe.useHandCursor = _scroll.desce.useHandCursor = false;

};

 

//Função 2 QUE DECIDE SE É TXT OU MC

public function init(txt:Boolean):Void

{

if(txt)setScrollTextField();

else setScrollMovieClip();

_type = txt;

createChild();

};

 

//Função 3

private function setScrollMovieClip():Void

{

var sw = new Number(Stage.width);

var sh = new Number(Stage.height);

 

var area:Number = (_mask._height / _container._height) * 100;

_max = Math.round(_container._height-_mask._height);

_yini = _container._y;

_scroll.drag_mc._y = 0;

animate(Math.max(15,Math.min(100,area)));

};

 

//Função 4 ANULADA

private function setScrollTextField():Void

{

_container.scroll = 0;

_max = _container.maxscroll;

var total = _container.bottomScroll - (_container.scroll - 1);

animate(Math.max(15, Math.min(100, total / (total+_max) * 100)));

if (_max <= 1) _scroll.drag_mc._y = 0,_scroll.drag_mc._yscale = 100;

delete total;

};

 

//Função 5

private function createChild():Void

{

_scroll.desce.onPress = downPress;

_scroll.desce.onRelease = _scroll.desce.onReleaseOutside =

_scroll.sobe.onRelease = _scroll.sobe.onReleaseOutside = arrowRelease;

_scroll.sobe.onPress = upPress;

_scroll.drag_mc.classObj = this;

_scroll.drag_mc.movePosition = movePosition;

_scroll.drag_mc.onPress = dragPress;

_scroll.drag_mc.onRelease = _scroll.drag_mc.onReleaseOutside = dragRelease;

_scroll.fundo_mc.onRelease = fundoRelease;

};

 

//Função 6

private function upPress():Void

{

var sc:MovieClip = this._parent;

this._interval = setInterval(

function(){

sc.drag_mc._y = Math.max(20, sc.drag_mc._y - 10);

sc.drag_mc.movePosition();

},50);

};

 

//Função 7

private function downPress():Void

{

var sw = new Number(Stage.width);

var sh = new Number(Stage.height);

 

var sc:MovieClip = this._parent;

this._interval = setInterval(

function(){

sc.drag_mc._y = Math.min(sh - sc.desce._height * 2 - 10, sc.drag_mc._y + 10);

sc.drag_mc.movePosition();

},50);

};

 

//Função 8

private function arrowRelease():Void

{

clearInterval(this._interval);

};

 

//Função 9

private function dragPress():Void

{

var sw = new Number(Stage.width);

var sh = new Number(Stage.height);

 

this.startDrag(false, this._parent.drag_mc._x = Math.floor(sw - this._parent.drag_mc._width), Math.floor(this._parent.sobe._height),this._parent.drag_mc._x = Math.floor(sw - this._parent.drag_mc._width), Math.floor(sh - this._parent.drag_mc._height - 20));

this.onMouseMove = this.movePosition;

};

 

//Função 10

private function dragRelease():Void

{

delete this.onMouseMove;

this.stopDrag();

};

 

//Função 11

private function fundoRelease():Void

{

var sw = new Number(Stage.width);

var sh = new Number(Stage.height);

 

this._parent.drag_mc._y = Math.max(0, Math.min(this._height - this._parent.drag_mc._height, (this._ymouse - (this._parent.drag_mc._height/2))));

this._parent.drag_mc.movePosition();

};

 

//Função 12

private function movePosition():Void

{

if(this.classObj._type)this.classObj._container.scroll = this.classObj.updatePosition()+1;

else this.classObj._container._y = this.classObj._yini - this.classObj.updatePosition();

updateAfterEvent();

};

 

//Função 13

private function updatePosition():Number

{

var sw = new Number(Stage.width);

var sh = new Number(Stage.height);

 

return Math.round(_scroll.drag_mc._y / (_scroll.fundo_mc._height - _scroll.drag_mc._height) * _max);

};

 

//Função 14

private function animate(value:Number):Void

{

var lis:MovieClip = _scroll.drag_mc;

var _tween:Tween = new Tween(lis,lis._yscale,value,650);

lis.onTweenUpdate = lis.onTweenEnd = function(v:Number):Void {

this._yscale = Math.round(v);

};

 

};

};

Grato desde já.

CONTO COM A AJUDA DE VCS!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E quais são os probleminhas???

1º O tamanho da área de rolagem é bem maior de que deveria, tipo tem muito espaço em branco em baixo da imagem a ser rolada"foto_mc".

2 Quando clicko no espaço CINZA "fundo_mc" o barra AZUL "drag_mc" deveria ir para em cima de onde eu clickei "certo ponto no fundo_mc" e não acontece!

3º A barra AZUL deveria ser do tamanho proporcional a área a ser rolada. "o drag_mc deveria ser proporcional ao foto_mc, logico que dentro dos calculos".

4º Quando você se clicka em cima da barra AZUL "drag_mc" o mc a ser rolado "foto_mc", desce cerca de uns 50px e não retorna mais ao parametro _y que deveria ser 0 e numca volta, só quando reiniamos o swf.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

E quais são os probleminhas???

1º O tamanho da área de rolagem é bem maior de que deveria, tipo tem muito espaço em branco em baixo da imagem a ser rolada"foto_mc".

2 Quando clicko no espaço CINZA "fundo_mc" o barra AZUL "drag_mc" deveria ir para em cima de onde eu clickei "certo ponto no fundo_mc" e não acontece!

3º A barra AZUL deveria ser do tamanho proporcional a área a ser rolada. "o drag_mc deveria ser proporcional ao foto_mc, logico que dentro dos calculos".

4º Quando você se clicka em cima da barra AZUL "drag_mc" o mc a ser rolado "foto_mc", desce cerca de uns 50px e não retorna mais ao parametro _y que deveria ser 0 e numca volta, só quando reiniamos o swf.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Por favor, alguem aí me ajude, estooooooo a dias tentando fazer esse codigo funcionar!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o fla ae pra nois

qdo ta dificil por palavras, so pegando o aquivo mesmo

=]

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o fla ae pra nois

qdo ta dificil por palavras, so pegando o aquivo mesmo

=]

flws

Ja estavam lá em cima... mas esta aí

 

Os aquivos estão aqui: .FLA .AS

 

ou aqui http://www.ricardogunter.com/MDScroll_modifi.zip

 

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Por favor, alguem aí me ajude, estooooooo a dias tentando fazer esse codigo funcionar!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.