Ir para conteúdo

POWERED BY:

Arquivado

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

brcontainer

Erro na Classe MdScroll(de Maxwell Dayvson)

Recommended Posts

Original: http://imasters.com.br/artigo/3474/act...l_e_horizontal/

/*Class MDScroll - by Maxwell Dayvson (www.dayvson.com)bugs/reports - dayvson@gmail.comconstructor:	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);*/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;	function MDScroll(rolagem,container,mascara)	{		_container = container;		_mask = mascara;		_scroll = rolagem;		_scroll.drag_mc.useHandCursor = _scroll.fundo_mc.useHandCursor = false;	};	public function init(txt:Boolean):Void	{		if(txt)setScrollTextField();		else setScrollMovieClip();		_type = txt;		createChild();	};	private function setScrollMovieClip():Void	{			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)));	};	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;	};	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;	};	private function upPress():Void	{		var sc:MovieClip = this._parent;		this._interval = setInterval(			function(){				sc.drag_mc._y = Math.max(0, sc.drag_mc._y - 10);				sc.drag_mc.movePosition();			},50);	};	private function downPress():Void	{		var sc:MovieClip = this._parent;		this._interval = setInterval(			function(){				sc.drag_mc._y = Math.min(sc.fundo_mc._height - sc.drag_mc._height, sc.drag_mc._y + 10);				sc.drag_mc.movePosition();			},50);	};	private function arrowRelease():Void	{		clearInterval(this._interval);	};	private function dragPress():Void	{		this.startDrag(false, 0, 0, 0, this._parent.fundo_mc._height - this._height);		this.onMouseMove = this.movePosition; 	};	private function dragRelease():Void	{		delete this.onMouseMove;		this.stopDrag();	};	private function fundoRelease():Void	{		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();	};	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();	};	private function updatePosition():Number	{		return Math.round(_scroll.drag_mc._y / (_scroll.fundo_mc._height - _scroll.drag_mc._height) * _max);	};	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);		};	};};
Essa classe eu peguei aki no imaster

http://www.imasters.com.br/artigo/3474/act...l_e_horizontal/

 

funciona perfeitamente

mas há um pequeno erro(q com certeza deve ser facil de corrigir Imagem Postada)

 

Foto é meu movieClipe > new MDScroll(rMovie,foto,mask);

Esse MovieClipe possui 6 frames e estou usando cada um como uma página

 

entaum eu coloquei o codigo q chama a classe numa função para ele reajustar as barras de rolagem

 

function load_scroll(){var scrollMc = new MDScroll(rMovie,foto,mask);var scrollhMc = new MDScroll(rMovie2,foto,mask);var scrollhTxt = new MDScroll(rTxt2,c2_txt);var scrollTxt = new MDScroll(rTxt,c_txt);scrollhMc.horizontal(true);scrollhMc.init();scrollMc.init();scrollhTxt.horizontal(true);scrollhTxt.init(true);scrollTxt.init(true);}
ae num botão eu coloquei o código assim exemplo para ir para "página um"

 

 

on (release) {tellTarget("foto"){gotoAndStop(1);}load_scroll();}
e tudo funciona normalmente porem há um erro

se eu rolo o scroll até em baixo e troco de "página(frame do MovieClipe foto)"

a classe num retorna a máscara para posição certa se o conteudo for menor q o da pagina anterior

o conteudo do frame fica acima da máscara e assim não podendo ter a visão correta...

 

Se não entenderam façam o seguinte vão nesse link :joia:

http://www.4shared.com/file/16963783/10e57...l_original.html

 

lá vcs rolem a o Scroll para até embaixo no maximo

ae cliquem nos outros links: fotos, Aluguel, Imovel, Localização, Cidade,

 

Isso seria uma pergunta se eu num tivesse arrumado uma solução

 

O codigo ficaria assim ^^ fui eu que fiz Imagem Postada hehehehe

 

var mc_x = foto._x;//pega posição X do movie clipe foto e deve-se usar var para q naum mude o valor depoisvar mc_y = foto._y;//pega posição Y do movie clipe fotofunction load_scroll(){var scrollMc = new MDScroll(rMovie,foto,mask,,);var scrollhMc = new MDScroll(rMovie2,foto,mask);var scrollhTxt = new MDScroll(rTxt2,c2_txt);var scrollTxt = new MDScroll(rTxt,c_txt);scrollhMc.horizontal(true);scrollhMc.init();scrollMc.init();scrollhTxt.horizontal(true);scrollhTxt.init(true);scrollTxt.init(true);}load_scroll();//para iniciar o Scroll
e a classe deve ficar assim:

 

/*Class MDScroll - by Maxwell Dayvson (www.dayvson.com)bugs/reports - dayvson@gmail.comconstructor:	new MDScroll(MovieClip_Rolagem,Conteudo,mask);methods	init	init(true) --> Para usar scroll com TextField 	horizontal(true) --> Para usar scroll Horizontal		usage:	var scrollMc = new MDScroll(rMovie,conteudo_mc,mask);	scrollMc.init();	//------- OU -------	var scrollTxt = new MDScroll(rTxt,c_txt,null);	scrollTxt.init(true);	//--------OU--------	var scrollMc = new MDScroll(rMovie,conteudo_mc,mask);	scrollMc.horizontal(true);	scrollMc.init();	*/import mx.effects.Tween;dynamic class MDScroll{	private var _mask:MovieClip;	private var _scroll:MovieClip;	private var _max:Number;	private var _ini:Number;	private var _txtPos:String;	private var _mcPos:String;		private var _type:Boolean;	private var _hor:Boolean;	private var _container;	function MDScroll(rolagem,container,mascara,posicaox,posicaoy)	{		_container = container;		_mask = mascara;		_scroll = rolagem;		_scroll.drag_mc.useHandCursor = _scroll.fundo_mc.useHandCursor = false;		_scroll.drag_mc._y = 0;		container._x = posicaox;		container._y = posicaoy;	};	public function init(txt:Boolean):Void	{		if(txt)setScrollTextField();		else setScrollMovieClip();		_type = txt;		createChild();	};	public function horizontal(v:Boolean):Void	{		_hor = v;	};	private function setScrollMovieClip():Void	{			var mValue:Number = _hor != true ? _mask._height : _mask._width;		var cValue:Number = _hor != true ? _container._height : _container._width;		var area  :Number = (mValue / cValue) * 100;		_max = Math.round(cValue-mValue);		_mcPos = _hor != true ? "_y" : "_x";		_ini = _container[_mcPos];		animate(Math.max(15,Math.min(100,area)));		delete mValue;		delete cValue;		delete area;	};	private function setScrollTextField():Void	{		_txtPos = _hor != true ? "scroll" : "hscroll";		_container[_txtPos] = 0;		_max = _container[_hor != true ? "maxscroll" : "maxhscroll"];		_container.mouseWheelEnabled = false;		var total = _container.bottomScroll - (_container[_txtPos] - 1);		animate(Math.max(15, Math.min(100, total / (total+_max) * 100)));		delete total;	};	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;	};	private function upPress():Void	{		var sc:MovieClip = this._parent;		this._interval = setInterval(			function(){				sc.drag_mc._y = Math.max(0, sc.drag_mc._y - 10);				sc.drag_mc.movePosition();			},50);	};	private function downPress():Void	{		var sc:MovieClip = this._parent;		this._interval = setInterval(			function(){				sc.drag_mc._y = Math.min(sc.fundo_mc._height - sc.drag_mc._height, sc.drag_mc._y + 10);				sc.drag_mc.movePosition();			},50);	};	private function arrowRelease():Void	{		clearInterval(this._interval);	};	private function dragPress():Void	{		this.startDrag(false, 0, 0, 0, this._parent.fundo_mc._height - this._height);		this.onMouseMove = this.movePosition; 	};	private function dragRelease():Void	{		delete this.onMouseMove;		this.stopDrag();	};	private function fundoRelease():Void	{		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();	};	private function movePosition():Void	{		if(this.classObj._type)			this.classObj._container[this.classObj._txtPos] = this.classObj.updatePosition()+1;		else 			this.classObj._container[this.classObj._mcPos] = this.classObj._ini - this.classObj.updatePosition();		updateAfterEvent();	};	private function updatePosition():Number	{		return Math.round(_scroll.drag_mc._y / (_scroll.fundo_mc._height - _scroll.drag_mc._height) * _max);	};	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);		};	};};
espero ter ajudado

qualquer duvida poste aki

 

algum outro bug tbm poste aki ^^

 

obrigado por lerem ... :hehehe:

Compartilhar este post


Link para o post
Compartilhar em outros sites

luciano_84

 

 

 

veja se o documento que você esta usando não esta configurado para usar AS3

 

lá no menu, na opção New , você deve escolher a opção Flash file( action Script 2.0)

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera... eu postei um tópico so´bre campo de texto, imagem e scroll, mas não tive resposta, achei esse tópico aqui e resolvi perguntar o seguinte:

 

Nesse tópico pelo que pude perceber tem um scroll específico para a parte de texto e outro para a parte da imagem.

 

um único scroll não pode funcionar para as duas coisas? Preciso de dois diferentes?

 

parabéns ao silverfox pela iniciativa.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao amigo eu vi seu tópico agora, mas acredito que talvez usar essa classe que eu passei seja melhor.

 

um único scroll não pode funcionar para as duas coisas? Preciso de dois diferentes?

Sim, pode sim, se estiverem dentro do mesmo MC(MOVIE CLIPE). ;)

 

Agora se for dois objetos separados, ae sim será preciso dois SCROLLs diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém por favor me explica como usar essa classe? eu não consigo usar ela em um dos meus arquivos... não sei como que inclui o arquivo mdscoll.as no meu arquivo .fla, já tem tentei "include" e "#include". No .fla do tutorial não tem nada chamando a classe também, como que faz isso meu Deus?

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.