Juste 0 Denunciar post Postado Agosto 30, 2012 Boa tarde a todos ! Estou no meio do meu trabalho com o prazo apertadíssimo e me deparei com uma situação. A função que eu criei deve trocar uma image e ocultar a atual quando eu clicar no botão "btn_next" e retroceder quando "btn_prev". Situação atual: Só avança para uma imagem de 7 ! hahaha Estou usando Tween para definir o estado atual das imagens como ocultas. Vamos ao código: image_2.visible = false; image_2.alpha = 0; image_3.visible = false; image_3.alpha = 0; image_4.visible = false; image_4.alpha = 0; image_5.visible = false; image_5.alpha = 0; image_6.visible = false; image_6.alpha = 0; image_7.visible = false; image_7.alpha = 0; var curState:String; var curClick:int; btn_next.addEventListener(MouseEvent.CLICK, next_slide); btn_prev.addEventListener(MouseEvent.CLICK, next_slide); function next_slide(e:MouseEvent):void { switch (e.currentTarget.name) { case "btn_next" : curState = "image_2"; curClick = 0; TweenMax.to(image_1, .5, {autoAlpha : 0}); TweenMax.to(image_2, .5, {autoAlpha : 1}); break; case "btn_next" : curState = "image_2"; curClick = 1; TweenMax.to(image_2, .5, {autoAlpha : 0}); TweenMax.to(image_3, .5, {autoAlpha : 1}); break; case "btn_next" : curState = "image_3"; curClick = 2; TweenMax.to(image_3, .5, {autoAlpha :0}); TweenMax.to(image_4, .5, {autoAlpha :1}); break; case "btn_next" : curState = "image_4"; curClick = 3; TweenMax.to(image_4, .5, {autoAlpha : 0}); TweenMax.to(image_5, .5, {autoAlpha :1}); break; case "btn_next" : curState = "image_5"; curClick = 4; TweenMax.to(image_5, .5, {autoAlpha : 0}); TweenMax.to(image_6, .5, {autoAlpha : 1}); break; case "btn_next" : curState = "image_6"; curClick = 5; TweenMax.to(image_6, .5, {autoAlpha : 0}); TweenMax.to(image_7, .5, {autoAlpha : 1}); break; case "btn_next" : curState = "image_7"; curClick = 6; TweenMax.to(image_7, .5, {autoAlpha : 0}); break; } } Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Agosto 30, 2012 Melhor usar carregamento externo das imagens, se possível, via xml, ou com Array. Na posição (0,0), empilhadas (não é a maneira recomendável, mas resolve, nesse caso use poucas imagens com o máximo de compressão, bem leves) e no evento de click, altere o índice. case 'btn_next': if(numImg < ultImg){ numImg++; } else { numImg = 0; } // etc Abs Compartilhar este post Link para o post Compartilhar em outros sites
Juste 0 Denunciar post Postado Agosto 30, 2012 Melhor usar carregamento externo das imagens, se possível, via xml, ou com Array. Na posição (0,0), empilhadas (não é a maneira recomendável, mas resolve, nesse caso use poucas imagens com o máximo de compressão, bem leves) e no evento de click, altere o índice. case 'btn_next': if(numImg < ultImg){ numImg++; } else { numImg = 0; } // etc Abs Eu estou tentando reaproveitar uma função que criei no JS, mas devo estar errando no método para o AS3. Também preciso que as imagens sejam exibidas somente quando forem chamadas =\ var arrImages:Array = ["./images/image_1.png", "./images/image_2.png","./images/image_3.png","./images/image_4.png","./images/image_5.png", "./images/image_6.png","./images/image_7.png"] ; var ind_image = 0 ; var ult_image = arrImages.length -1 ; function swap_image(next) { ind_image = ind_image + next; if(ind_image > ult_image) { ind_image = 0 }; if(ind_image < 0) { ind_image = ult_image }; getChildByName('arrImages') = arrImages[ind_image]; } } Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Agosto 31, 2012 Mas você está fazendo um switch de um case só, todos os seus cases são o mesmo "btn_next", dai ele só vai funcionar o primeiro. Nesse caso é melhor você fazer um id numérico e ir mudando de acordo com o incremento ou decremento do id, dai você muda os alphas. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Setembro 1, 2012 Com xml dá pra usar apenas 2 cases, 'btn_avancar' e 'btn_voltar'. Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Setembro 1, 2012 Não é bem com xml, de qquer forma é melhor ele fazer um switch com 2 cases, o problema é que ele está usando o mesmo resultado do switch em todos os cases, o certo é ele usar um id, e de acordo com o nome do botão ele adicionar ou subtrair do id, e com um mod, ele coloca sempre a imagem num loop infinito, tanto pra tras quanto para frente, ex: var arMovies: Array = new Array(); var i: Number = 7; while(i){ arMovies.push("image_" + i--); } arMovies.reverse(); btn_next.addEventListener(MouseEvent.CLICK, next_slide); btn_prev.addEventListener(MouseEvent.CLICK, next_slide); var id:Number = 0; function next_slide(e:MouseEvent):void { switch(e.currentTarget.name){ case "btn_next": id += 1; trace(arMovies[id % arMovies.length]); break; case "btn_prev": id += arMovies.length - 1; trace(arMovies[id % arMovies.length]); break; } } Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Setembro 1, 2012 @ carneirinho Não entrei no mérito da questão, apenas sugeri um caminho. Tenho funfando com xml + timer. Code enxuto, lindinho! :P Compartilhar este post Link para o post Compartilhar em outros sites