Ir para conteúdo
Fórum Script Brasil

Pooh

Membros
  • Total de itens

    186
  • Registro em

  • Última visita

Sobre Pooh

  • Data de Nascimento 07/02/1990

Contatos

  • MSN
    dis2bru@hotmail.com
  • Website URL
    http://www.kriare.com

Perfil

  • Gender
    Male
  • Location
    Sampa

Pooh's Achievements

0

Reputação

  1. Boa tarde! El pancho você tem 2 probleminhas visíveis ai... O primeiro seria que seu evento "ajax" somente é disparado como você mesmo registro no "ONCLICK" ou seja....??? apenas quando o usuário CLICKAR no botão... O segundo é que você não está tratando o evento submit do formulário. O ideal é você tratar o submit do seu form...mas você é o capitão do navio e quer apenas bloquear o enter. vamos la. Como não sei o que você tem nesse seu ajax... pois uma coisa poderia nos resolver a vida: Se a sua função ajax não desse submit no form, basta que adicione esse evento nele: onSubmit="return false" Porém se em algum momento da sua vida você ainda quer dar submit no form, sinto muito trate o evento dele pois é inviável ficar bloqueando a tecla enter. ex: <script> /*Vamos supor que se codigo ajax esteja na funcao ajax*/ var submitByClick = false; //o que nos vai bloquear o submit... var ajax = function() //função do onclick! { /*aqui seu codigo ajax bla bla bla antes de tentar dar o submit pela função...*/ submitByClick = true; //setamos nossa condicional para true; document.getElementById('idDoSeuForm').submit(); //agora o submit vai funcionar }; var submitHandler = function() //função do onsubmit! { return submitByClick; } </script> <body> <form method="get" id="idDoSeuForm" name="nomedoSeuform" onSubmit="return submitHandler()"> <input type="text" name="inputQualquer" /> <input type="button" value="ajax!" onClick="ajax()"/> </form> </body> Bom isso já seria o suficiente pra você conseguir o que quer.... Não usamos nenhum framework, o que seria bom já que com as condições da internet atualmente. Não vou entrar em metodologia de trabalho mt menos suas ferramentas, espero que com isso você consiga desenvolver o que precisa e durma em paz... Se ainda assim não conseguir, tente mais uma vez E claro tente voltar aqui apenas para dizer que deu certo para que mais pessoas saibam que isso resolveu esse problema que você teve e com certeza outros virão a ter e bla bla bla ok parei de falar... Abraços e boa sorte! Poofy
  2. Boa tarde. Você procurou pouco, perdi 5 minutos e achei 3 "image sliders" que funcionam da maneira que pediu. Se esforce um pouquinho mais que vai conseguir :D A tag de busca já está ai ^^ Abraços Poofy
  3. Boa tarde ;) Quando você diz: "É possível?" Você quer dizer: "Já existe pronto?" ou realmente está pergunta se tem como "você" desenvolver? Se você espera encontrar algo pronto como "bixinho em flash com x,y,z comandos para você, é so arrastar e usar" é pouco provável, apesar de que eu não mexo com actionscript a muito tempo, tente a sorte e dê uma buscada no tio google. Se você deseja desenvolver sim é possível. Você pode mapear os inputs do campo de texto, em um switch, em uma matriz de comandos na classe do "cachorro" cada comando atirando a ação assimilada a ele poderia até mesmo dizer pule, quando ele estiver deitado e seu objeto ser inteligente o suficiente para saber que determinadas ações não podem ser feitas sentado, então ele deve primeiro chamar a ação "levantar" e somente depois "pular"... nada fatalmente difícil. Para mim pessoalmente o mais difícil seria fazer o tal personagem auhauhaua busque alguén na área de animação para lhe auxiliar. Abraços Poofy
  4. Bom ninguém se manifestou. De duas uma: Ou o assunto é ridiculamente simples e ninguém se deu ao trabalho de comentar. Ou aqui no fórum como esperado só restaram apenas usuários interessados em resolverem seus problemas e irem embora. Não trazem mais soluções porém problemas. Apesar desse tópico não ser necessariamente um problema e sim um discussão da melhor maneira de se fazer algo, eu obviamente não esperaria tanto tempo assim para tomar a minha decisão. Estou usando a solução que propus mesmo. Para quem interessar esse script faz nada mais nada menos que gerar dinamicamente um form do tipo POST, adicionar as propriedades do seu objeto como campos do tipo hidden e dar um submit nele, ficando completamente transparente e logicamente parecendo que demos apenas um window.location com postvars. /* * @Author: Diego Yungh Costa <POOH/Poofy> */ var Package; if (!Package){ Package = {}; } (function(){ /*Form constants*/ var form_header = '<form method="@method" action="@action" id="@id">'; var field_template = '<input type="hidden" name="@name" value="@value" />'; var form_footer = '</form>'; var Fields = new Array(); function replace_token(name,value,token_string) { return String(token_string).replace('@'+name, value); }; function addValue(name,value) { Fields.push(replace_token('name',name,replace_token('value', value, field_template))); }; function build_form(method,action) { var form = replace_token('action',action,replace_token('method',method,form_header)); var data = ''; for ( var field in Fields) data += Fields[field]; return form+data+form_footer; }; Package.post = function (url,postObject) { for ( var data in postObject) addValue(data,postObject[data]); var rndID = Math.ceil(Math.random()*777); var form = replace_token('id',rndID,build_form('POST',url)); document.getElementsByTagName('body')[0].innerHTML += form; //supondo que temos um body... document.getElementById(rndID).submit(); }; }()); Uso: &lt;script src='.../package.js' type="text/javascript"></script> &lt;script> //uso 1 Package.post('www.suaURL.com.br',{nome:'Diego',idade:123}); //uso 2 var postVars = new Object(); postVars.nome = 'Fulano'; postVars.idade = 2131231231; Package.post('www.suaURL.com.br',postVars); </script> Não espere que ele serialize arrays nem objetos nem nada do gênero. Se ao invés de um quebra galho ele virasse uma solução com certeza eu daria suporte a esse tipo de operação, inclusive melhoraria algumas coisas mas...está funcionando, e provavelmente eu vou rever o fluxo da minha página pra uma hora retirar essa gambi que por hora é necessária. Qualquer dúvida poste ai ^^ Abraços do Poofy
  5. Boa tarde galerinha do mal! Estou com uma pulga atrás da orelha no seguinte. Quero fazer um post redirect sem um formulario, não vou dizer que vasculhei a net pois não vasculhei, achei o básico de sempre Ajax, e você ter um form na pagina associar os valores no campo e dar submit. Porque não, até hoje, ninguen fez uma lib que por exemplo: Lib.post( url , postVars ); Que redireciona você pra página com valores em POST ? pois fiz algo bem parecido mas criando um form dinamicamente, fazendo um append no body e dando submit. a página não apresenta um form "escondido" tosco pra kralho, acontece como se fosse um pacote. ex: Package.post( 'minhaPagina.xxx' , postObject ); o postObject é um objeto simulando keys mapeadas, ou seja (name:value) ex: var postObject = new Object(); postObject.name = 'foo'; postObject.age = 123; ao final obtemos: <form method="POST" action="minhaPagina.xxx" id="tokenGeradoPeloPackage"><input type="hidden" name="name" value="foo"/><input type="hidden" name="age" value="123"/></form> E damos o submit dentro da propria requisição...nada fica visível tanto pro usuário quanto pro dev. Empacotamos os dados em um form e mandamos, como no correio. Bom estou mais querendo saber o porque "não" do que o porque sim. Tenho certeza que os frameworks disponiveis já teriam feito se fosse interessante. Grato ;)
  6. vou analisar seus arquivos, não sei lhe dizer se esta é a melhor forma de se fazer um preloader. O AS2 pode usar conceitos de listeners para monitorar isso. Em resumo: Você criar um Carregador Adiciona a esse carregador um listener que vai monitorar por exemplo os bytes carregados até o presente momento. Carrega uma imagem/arquivo pelo carregador com esses dados obtidos você monta facilmente um retangulo que vai sendo preenchido ou uma porcentagem. E quando o valor atingir o desejado, seja 100% ou qualquer outro valor que você quiser, você chama uma função que acaba com esse listener e mostra a foto com fade. Para o fade, sem usar a timeline você pode usar bibliotecas de movimento, cada tem a sua que gosta, eu no as2 uso mc_tween e TweenLite. Existem inumeros tutoriais sobre monitor carregamento de arquivos e imagens no as2. Boa sorte ;)
  7. Olá amigo! Detalhe mais por favor. Quando você clika na imagem(preview) ela carrega a imagem original, é isso ?
  8. Equação 1: (0.2)+(0.2)+(0.2).... 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 .... Equação 2 (0.5) * (0.2) * (0²) --> (0.5) * (0.2) * ((1/12)²) temos 0.5 * 0.2 = 0.1 aonde 1/12 = 0.08 fica 0.1 * ( 0.08 * n )² de n 1 até 10 0,00064 0,00256 0,00576 0,01024 0,016 0,02304 0,03136 0,04096 0,05184 0,064 são os resultados obtidos... não sei daonde você tirou que esses resultados eram iguais...
  9. Faça o tutorial do script...disponibilizar ele para baixar é bem diferente de explicar. sei que você consegue ;)
  10. Olá flasheiros Venho aqui compartilhar algo que apesar de existirem vários por ai, foi preferível criar um do que procurar pronto... Um efeito simples de arrastar e soltar, e ao fazer isso os objetos se mexerem de acordo com o quanto você arrastou. Bom, peguei uma meia hora e bolei toda a execução e mais 30 minutos estou eu aqui compartilhando com vocês o fruto dessa necessidade. Não está com as firulas mas está 100% funcional. Vamos ao que interessa ;) Arquivos: Principal.Fla //aonde faremos nosso teste de aplicação Dragable.as //é a nossa classe que diz como nosso objeto deve se comportar DeltaDrag.as //é a classe que calcula e passa o parametro pro Dragable Não se incomodem com o meu inglês, em alguns pontos da classe uso português em outros inglês...é a maldita influencia...você já pensa em inglês, escrever é consequência. de qualquer forma é bem simples o raciocinio, uma classe da ao objeto as caracteristicas tipicas de velocidade e degradação da mesma e a outra classe se encarrega de guardar todos os objetos que serão afetados pelo drag/drop, calcula e passa via função do objeto. O calculo que fiz pode ser facilmente substituído, pois fiz pensando no meu projeto. Imaginei a diferença em distância de 2 pontos, ou seja o deltaDist. imaginei a diferença de tempo entre pressionar e soltar ou seja deltaTime; lembram...distancia/tempo = velocidade ? é exatamente o que vamos fazer... porém para arrumar o calculo adicionei uma constante que acerta a velocidade. esse acerto pode ficar mais bonito se feito no proprio objeto. Vamos ao objeto: package { import flash.display.Sprite; import flash.events.*; public class Dragable extends Sprite { /* vars */ private var SpeedX = 0; private var SpeedY = 0; private var AcelX = 0; private var AcelY = 0; private var SpeedDecay = 0.9; public function Dragable() { this.addEventListener(Event.ENTER_FRAME,refreshSelf); } /*Speed calcs*/ public function AccX(val:Number){ this.AcelX += val; } public function AccY(val:Number){ this.AcelY += val; } private function refreshSelf(e) { SpeedX = AcelX; SpeedY = AcelY; AcelX *= SpeedDecay; AcelY *= SpeedDecay; this.x += SpeedX; this.y += SpeedY; if( AcelX < 0.1 && AcelX > -0.1 ){ AcelX = 0; } if( AcelY < 0.1 && AcelY >-0.1 ){ AcelY = 0; } } } } Não há muito o que explicar, fiz o mais limpo possível... Extendi Sprite que é mais leve que MovieClip e possui suporte a eventos, temos ai variaveis separadas para os eixos X e Y. A minha degradação de velocidade ficou "melhor" em 0.9, quando menor, mais rapido o objeto para, quanto maior, mais ele demora, se for acima de 1 ao invés dele parar ele vai acelerar ou seja, não use... Adicionamos um listener para que ele fique fazendo um refresh no nosso objeto, para quem tiver vontade, pode adicionar um if no início, verificando se existe aceleração em X ou Y, assim evita ele ler todas as linhas e calcular nada, perda de performance em utilização mais complexa. Adicionei 2 setters para podermos adicionar uma aceleração ao nosso amigo, assim eu posso passar os resultados dos calculos realizados pela outra classe ao objeto. E a função de atualização, como todos conhecemos, a velocidade é algo simples de ser tratado. Transformamos aceleração diretamente em velocidade (pode adicionar uma aceleração gradativa, fiz uma passagem direta sem firulas...) Degradamos a aceleração atualizamos a posição de nosso objeto, afim de evitar que nosso objeto fique "tremendo" devido a degradação ser fruto de uma parte de sí mesmo ou seja, você sempre está pegando uma fração menor e não subtraindo, resumindo jamais se chega a zero. Para tratar isso delimitamos um intervalo ai de 0,1 para mais e para menos, assim, sempre que ele chegar nesse intervalo de aceleração ele zera e fica parado de vez... Agora ao gerenciador de drag/drop package { import flash.events.*; import flash.geom.Point; import flash.display.Sprite; public class DeltaDrag extends Sprite { /*variaveis*/ private var clickPoint:Point = new Point(0,0); private var releasePoint:Point = new Point(0,0); private var clickTime:Number = 0; private var releaseTime:Number = 0; private var SpeedConstant:Number = 21; private var affectedObjects:Array = new Array(); private var lineObject:Sprite = new Sprite(); private var objectHost; public function DeltaDrag(objectHost,objectsArray) { this.objectHost = objectHost; this.objectHost.addEventListener(MouseEvent.MOUSE_DOWN,pointClick); this.objectHost.addEventListener(MouseEvent.MOUSE_UP,pointRelease); this.objectHost.addChild(this.lineObject); this.affectedObjects = objectsArray; } private function refreshLine(e){ this.lineObject.graphics.clear(); this.lineObject.graphics.lineStyle(2,0xffffff); this.lineObject.graphics.moveTo(this.clickPoint.x,this.clickPoint.y); this.lineObject.graphics.lineTo(mouseX,mouseY); } private function pointClick(e) { this.clickPoint.x = mouseX; this.clickPoint.y = mouseY; var counter:Date = new Date(); this.clickTime = counter.getTime(); /*linha*/ this.objectHost.addEventListener(Event.ENTER_FRAME,refreshLine); } private function pointRelease(e) { this.releasePoint.x = mouseX; this.releasePoint.y = mouseY; var counter:Date = new Date(); this.releaseTime = counter.getTime(); var deltaDistanceX:Number = this.releasePoint.x - this.clickPoint.x; var deltaDistanceY:Number = this.releasePoint.y - this.clickPoint.y; var deltaTime:Number = (this.releaseTime-this.clickTime) / 1000; var deltaX:Number = ( deltaDistanceX / ( deltaTime * this.SpeedConstant ) ); var deltaY:Number = ( deltaDistanceY / ( deltaTime * this.SpeedConstant ) ); refreshObjects(deltaX,deltaY); this.objectHost.removeEventListener(Event.ENTER_FRAME,refreshLine); this.lineObject.graphics.clear(); } private function refreshObjects(valX:Number,valY:Number) { for each (var object in this.affectedObjects) { object.AccX(valX); object.AccY(valY); } } } } Novamente extendi sprite para pegar os eventos, chamei os Pontos mais por questão de gosto, pois são totalmente dispensáveis no armazenamento das posições de press e release... é preciso um objeto de referência pois é interessante usar essa funcionalidade em parte da nossa aplicação, no caso eu utilizei todo o stage, por isso opassei como parametro...assim como os objetos afetados, deixei como array, assim dando suporte a multiplos objetos afetados pelo drag...dai o nome affectedObjects :) Agora à nossa conta... a diferença entre as distâncias foi facilmente calculada através de 2 listeners... um para o evento de MOUSE_DOWN(press) e outro para o evento de MOUSE_UP(release) No evento de Press, gravamos as posições do nosso mouse em um ponto, e pegamos a hora atual na forma de milisegundos Adicionei ai uma pequena firula que foi o surgimento de uma linha guia que teoricamente demonstraria a "força" que você vai mover os objetos afetados, porém estou adicionando o enfraquecimento devido ao tempo, pois como diz a nossa conta, quanto menor o tempo e maior a distancia, mais rapido somos, quanto menor a distancia e maior o tempo, mais lento somos... Se ficarmos com o mouse segurado e parado em um ponto durante alguns segundos e soltar, o resultado será completamente diferente de arrastar rapidamente e soltar...regra de velocidade... Bom resumindo fiz mais um listener para desenhar uma linha pra ficar visivel o drag. Após isso vem o nosso evento de Release que é aonde soltamos o dedinho do mouse gravamos esse novo ponto para poder processar o calculo, gravamos o novo tempo em milisegundos para poder comparar também seria interessante tirar o calculo dai e colocar em uma função "calcular" ficaria esteticamente melhor... de qualquer forma, chegamos no nosso amigo calculo... é um conta simples como temos 2 eixos, vamos calcular o deltaX e deltaY aonde delta é apenas um sinonimo para "diferença" que eu estou usando...nada a ver em deltaX e segundo a minha formula que é (deltaDist / deltaTempo *constanteConcertoQuebraGalho ) teremos ai: var deltaX:Number = ( deltaDistanceX / ( deltaTime * this.SpeedConstant ) ); caso alguen não conheça, pegamos a diferença em segundos, através da comparação entre 2 "times" provenientes da classe nativa Date, que nos fornece o método time(); que retorna o tempo em milisegundos com ponto zero em seja la quando, acho que 1970. Assim pudemos ver quanto tempo demoramos pra chegar de um ponto ao outro... Retiramos o nosso listener de update da Linha demonstrativa, pois não queremos mais um listener de ENTER_FRAME rodando sem parar a estoua... como nos foi passado uma array de objetos que serão afetados pelo movimento, fazemos um for each para distribuir o comando para todos, e enfim utilizando o nosso método setter de aceleração AccX e accY atualizamos nosso objetos de acordo com o nosso drag/drop. Agora, usando essas classes em um exemplo simples: Fiz um for para que vocês vissem que podemos colocar N objetos dependendo do quanto o processador aguentar... import Dragable import DeltaDrag var objectsArray:Array = new Array(); for(var i:uint = 0; i< 20; i++){ var poofy:Dragable = new Dragable(); poofy.graphics.beginFill(0xff0000); poofy.graphics.drawRect(0,0,100,100); poofy.graphics.endFill(); poofy.x = 200*i; poofy.y = 150; stage.addChild(poofy); objectsArray.push(poofy); } var myDragManager:DeltaDrag = new DeltaDrag(stage,objectsArray); Bons estudos para os que leram até aqui, creio que, quem leu aprendeu e quem não leu, bom não perdeu nada, deixou de ganhar... Abraços do Poofy
  11. Tenho sim muitas sugestões, antes de dizer qualquer coisa gostaria de dar uma olhada no .fla Abraços Pooh
  12. você precisa declara o TerceiroView nos meus teste eu declarei: var terceiroView:TerceiroView = new TerceiroView(); mas pode ser qualquer outro objeto que você exporte da sua biblioteca :) Abraços !
  13. bom se queres mexer com calculadora a inicio é mt mais programação. Nunca vi utilidade nisso mas provavelmente é por razões didáticas....não tenho muito o que passar, desenvolva a lógica da calculadora e começe com coisas fáceis, se é seu primeiro contato, começe entendo o que é um movieCLip, o que é Stage, Root, Classes, pra depois pensar em desenvolver algo.... senão vais ser mais um aqui no fórum com um projeto cabeludo nas costas cheio de dúvidas porque começou a casa pelo teto e não pelas paredes... Programação em geral: Orientação a Objeto Classes Padrão de Projetos Flash: DisplayObjects Stage Events Listeners Timeline Após estudar isso você pode desenvolver algo, não se deixe levar pela facilidade do flash em deixar leigos fazerem programas pois é uma armadilha, use AS3 para não sofrer mais tarde com a migração do AS2 para o AS3 e sempre pense Orientado a objeto. Quaisquer dúvidas quase todo dia a noite estou respondendo o que aparecer no fórum :closedeyes: Abraços Pooh
  14. Olá garoto :) Testei aqui e funcionou perfeitamente a nova lógica.... O script funciona da seguinte maneira, você informa na verdade o movieClip que está ATIVO no momento e por qual ele deve TROCAR. Resumindo em ordem crescente é uma lógica 0-1,1-2,2-3,3-4,4-5 .... você deve sempre repetir o ATIVO pois é uma referência. como você fez um teste booleano ACTIVE|INACTIVE nunca vai passar de 2 opções meu caro.... não basta chamar o callFlip sem passar parâmetros o maximo que ele pode fazer é trocar de estado mesmo... Vamos lá uma nova lógica pra vc Mudando a função callflip: var objAtual:DisplayObject; function callFlip(obj:DisplayObject):void { if (! objAtual) { objAtual = mainView; }else{ flip = new Flip(objAtual, obj, 2, "left", true); addChild(flip); flipped = true; objAtual = obj; } } Assim guardamos o objeto de FLIP atual em objAtual e caso ele não tenha sido definido ainda ele é nosso objeto default "mainView"; Para que funcione deves chamar agora por : callFlip(secondView); Dentro de uma função de evento... mainView.infoButton.addEventListener(MouseEvent.MOUSE_DOWN, function(){callFlip(secondView)}); Procure estudar mais seu código e ver seu funcionamento Boa sorte e bons Estudos Abraços
  15. O ideal seria você colocar esse ON press em apenas uma parte do mc ou seja por exemplo na aba, ou criar um botão minimizar depois que a aba estiver aberta. Pois colocando o comando no movieclip ele ignora o que tiver dentro dele. espero ter ajudado Abraços
×
×
  • Criar Novo...