brcontainer 16 Denunciar post Postado Maio 30, 2007 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 imasterhttp://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 ) 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 errose 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 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 Scrolle 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 ajudadoqualquer duvida poste aki algum outro bug tbm poste aki ^^ obrigado por lerem ... :hehehe: Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Maio 31, 2007 Valeu, silverfox!Movi para dicas e matérias. ;)Abraço Compartilhar este post Link para o post Compartilhar em outros sites
luciano_84 0 Denunciar post Postado Abril 25, 2008 Eu não consigo fazer funcionar, estou usando flash cs3, tem algum problema se usar versão diferente ou eu eh q sou muito ruim no flash? hehehe Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Abril 25, 2008 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
brcontainer 16 Denunciar post Postado Maio 11, 2008 luciano_84 vocÊ baixou o original que passei no link? Compartilhar este post Link para o post Compartilhar em outros sites
webdibula 0 Denunciar post Postado Dezembro 1, 2008 estou utlizando flash 8 tem alguma diferença? Compartilhar este post Link para o post Compartilhar em outros sites
brcontainer 16 Denunciar post Postado Dezembro 1, 2008 No flash 8 não tem diferenças, somente no Cs3 para cima, deve-se usar Action Script 2.0 ;) Compartilhar este post Link para o post Compartilhar em outros sites
Freelife 2 Denunciar post Postado Dezembro 3, 2008 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
brcontainer 16 Denunciar post Postado Dezembro 4, 2008 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
Rodrigo Correa 0 Denunciar post Postado Dezembro 17, 2008 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
brcontainer 16 Denunciar post Postado Dezembro 17, 2008 amigo atualizei o tópico, esqueci do link original, ta ae: http://imasters.com.br/artigo/3474/act...l_e_horizontal/ ensinando a usar ;) Compartilhar este post Link para o post Compartilhar em outros sites