FLASHGURU (155 pts)

ZEBEDIAH (35 pts)

FÁBIO DUARTE (79 pts)

HELEN TRIOLO (444 pts)

DAAFY (55 pts)

GUILHERME SCHEIBE (49 pts)

PEDRO CLAUDIO (50 pts)

ÉMERSON ROCHA (85 pts)

LUIZ HERRERA (117 pts)

JOÃO NETO (78 pts)

GÉRIO (93 pts)

DEN IVANOV (260 pts)
Treinamento PontoFlash de Flash e ActionScript

Tem como importar paletas de cores para o Flash?

Como movimentar um movieclip no palco ao comando de botões acionados por eventos na TimeLine?

Como faço para dar um fade-out em um determinado momento de um som no Flash?

Não consigo enviar uma instrução de um movieclip para uma outra cena.

Queria enviar um formulário via ASP usando a classe LoadVars e o método sendAndLoad.

Como fazer um rastro (mouse trial), mas que as cópias ainda variassem o alpha.

Gostaria de fazer um sistema de login e senha no flash com ASP.

Problemas para visualizar o site no MAC?

Como eu faço um sorteio (random) e ir para o frame sorteado?

Como fazer um jogo de perguntas e respostas?

Pra galera que curte Animação Clássica em Flash...

Alguem conhece algum plug-in para exportar do 3d studio max e importar no flash?

Como fazer um cronômetro disparado por um botão no flash MX?

Por favor me explique o que é esse número depois do arquivo e também o que faz loadMovieNum?
Aprendendo a interagir Flash e ASP

Variáveis no Flash MX

Gradiente variável

Colisão

Gira logo.

CD Record (um player com clips arrastáveis).

Menu dinâmico a partir de um xml.

Busca em Textos no Flash MX

Labirinto - Plataforma de jogo em terceira pessoa em flash 5: 1° parte

Gráfico pizza.

Line Draw.

Fireworks, o patinho feio da Macromedia.
Lineas 3

Raspadinha

News

Tint rgb

Scroll circular

Movimento array

Triangulos

Mapa - Países com B

Oposição

Wireframe

Hidden menu

3d panels1
HOME | TRUQUES E DICAS
Como faço um objeto se movimentar pelo teclado? E esse objeto Key, como funciona?
por


Para fazer isso, você tem que ter a imagem como um movieclip (F8) e a este você tem que dar um nome de instância (Ctrl + I). Digamos que seja "alvo" o nome de instância.

Num botão vc coloca (Shift + Ctrl + A):

on (keyPress "") {
// escolha a opção key press e digite a tecla que quiser
setProperty ("_root.alvo", _y, _root.alvo._y - 5);
// aqui eu estou dizendo para ele pegar a posição atual de "alvo"
// e diminuindo 5 por teclada, para ele subir
}

espero ter ajudado

Alê Porto

Eu recomendo que você estude e utilize o objeto Key em jogos. Com o objeto Key podemos trabalhar de maneira eficiente com a interface mais comum em um jogo, o teclado. Com ele é possível detectar se uma ou várias teclas estão pressionadas. Podemos, por exemplo, movimentar um movieclip com o teclado alterando suas propriedades _x e _y constantemente, caso as setas do teclado estejam pressionadas.

A verificação pode ser feita utilizando-se um bloco de evento de botão (on) ou um bloco de evento de movieclip (onClipEvent).
Embora o bloco de evento de botões ainda tenha funcionalidade, estaria mentindo se não dissesse que o onClipEvent oferece um tratamento de eventos muito mais eficiente quando se trata de desenvolvimento de jogos.

Para utilizar o objeto Key não é preciso criar um nova instância dele, e sim apenas acessar suas propriedades é métodos intrínsecos. Veja o seguinte exemplo, que verifica se a tecla Enter está pressionada:

if(Key.isDown(Key.ENTER)) {
trace(“A tecla enter foi pressionada!”);
}

O script cima é geralmente utilizado dentro de um evento enterFrame para funcionar, mas também existe uma outra maneira de detectar se uma tecla foi pressionada. Você pode utilizar também o método getCode do objeto Key e o bloco de evento keyDown, que é executado quando uma tecla é pressionada.
Veja o seguinte exemplo:

if(Key.getCode() == Key.ENTER) {
trace(“A tecla enter foi pressionada!”);
}

Todas teclas tem um código virtual para que você possa acessá-las em um script em qualquer teclado independentemente do idioma. Por exemplo, o código da tecla "ENTER" é 13 e o código da tecla "j" é 74. As teclas mais comuns tem propriedades específicas que retornam o valor do código da tecla, por exemplo, Key.UP entre outros. O método getCode retorna o código virtual da tecla. Mas você pode utilizar o método getAscii, que retorna o valor ASCII da tecla, veja o exemplo:

if(String.fromCharCode(Key.getAscii()) == "A") {
trace(“A tecla A foi pressionada!”);
}

O método fromCharCode do objeto String retorna uma string com o caractere correspondente ao valor ASCII definido. É importante lembrar que o código ASCII de uma palavra maiúscula é diferente do código de uma palavra minúscula.

Bem, agora veja um exemplo de como movimentar um objeto para esquerda, direita, cima e baixo utilizando o objeto Key. No caso, é evidente que o objeto é um movieclip, que deve ter uma nome de instância definido (vamos utilizar como exemplo o nome carro).

onClipEvent(load) {
var velocidade = 5;
}
onClipEvent(enterFrame) {
if(Key.isDown(Key.UP) {
_y -= velocidade;
}
if(Key.isDown(Key.RIGHT)) {
_x += velocidade;
}
if(Key.isDown(Key.DOWN)) {
_y += velocidade;
}
if(Key.isDown(Key.LEFT)) {
_x -= velocidade;
}
}

A variável velocidade representa apenas um valor a ser acrescido ou subtraído das propridades _x e _y do movieclip. Note que eu utilizei uma grande estrutura condicional. Eu tenho uma técnica um pouco mais interessante para isso, que diminui bastante o número de linhas no código,
veja abaixo.

onClipEvent(load) {
var velocidade = 5;
var mover = new Array();
mover[Key.UP] = function() { _y -= velocidade; }
mover[Key.RIGHT] = function() { _x += velocidade; }
mover[Key.DOWN] = function() { _y += velocidade; }
mover[Key.LEFT] = function() { _x -= velocidade; }
}
onClipEvent(keyDown) {
mover[Key.getCode()]();
}


Eu utilizo uma array para armazenar pequenas funções, em índices equivalentes aos códigos de tecla desejados. Assim posso facilmente executá-las dentro do evento enterFrame. Jonas Galvez

Jonas,

Você poderia explicar melhor isto:

mover[Key.DOWN] = function() { _y += velocidade; }

já sei que _y-=velocidade faz, e que mover[] é a array mas nunca havia visto essa maneira de definir os elementos de uma Array. Você deu nome a eles? E que tipo de chamada de função é essa? Não precisa de nome? Ela pode ter mais linhas tipo:

mover[Key.DOWN] = function() {
_y += velocidade;
direcao = baixo;
etc...
}

Valeu por qualquer esclarecimento.
Estou fazendo um jogo com um personagem que tem varias ações, tentei o key.getcode só que eu não poderia, por exemplo, correr-socar-continuar correndo por que depois de pressionar a tecla para socar o getcode seria daquela tecla e o personagem pararia de correr. Então eu optei por usar botões que jogam o movieclip do personagem para um quadro específico com uma ação "enter frame" que move o personagem. Ficou perfeito e muito leve e não impede que o personagem faça outras ações, mas acho que posso melhorar ainda, sei lá, tentar diminuir mais o código.
A vantagem de usar o enterframe para mover algo é que o keydown e o onpress ficam restritos a repetição do teclado:a......aaaaaaaaaaaaaa
e isso faz com que haja perda de "jogabilidade".

Diego


Antes de mais nada é preciso entender que existem quatro tipos de dados primários no ActionScript. Uma variável pode conter uma string (texto
literal), number (número sem aspas), object e function. Considerando este fato, poderíamos dizer que uma função poderia ser criada de duas maneiras.

function minhaFuncion(argumento1, argumento2) {
trace("Este é o argumento1: " + argumento1 + ";");
trace("E este é o argumento2: " + argumento2 + ".");
}

minhaFuncao = function(argumento1, argumento2) {
trace("Este é o argumento1: " + argumento1 + ";");
trace("E este é o argumento2: " + argumento2 + ".");
}

Note que a segunda opção tráz uma grande vantagem sobre a primeira, que é a possibilidade de atribuir uma função à qualquer variável, até mesmo à um elemento de uma array, veja o exemplo:

funcoes = new Array();

funcoes[0] = function() {
trace("Esta função está armazenada no índice 0 da array.");
}

funcoes[1] = function() {
trace("Esta função está armazenada no índice 1 da array.");
}

Para executar estas funções, basta digitar o nome da array (e o índice) juntamente com parênteses (assim como faríamos com uma função normal), veja o exemplo:

funcoes[0]();
funcoes[1]();

No caso, isto foi útil com o objeto Key pois armazenei as funções nos índices que correspondem ao valor das propriedades UP, DOWN, LEFT E RIGHT do objeto Key. Isto significa que mover[Key.DOWN] também poderia ser mover[40]. Quando o evento keyDown for executado, o método getCode irá retornar um número. Se este número for equivalente a algum dos índices que contém funções na array, o movieclip será movimentado.

Jonas Galvez

Ah! aproveitando a disposição (desculpe estar alugando).O jogo que estou fazendo é em vista isométrica mas sem a utilização de tales e tive de desenvolver um código para simular o eixo "z". Tenho uma função mover() que chamo através de um "enterframe" com os parâmetros fator (que no caso é a velocidade) e qualclip (que se refere ao clip que será movido pela função) e dentro dela coloquei o código:

var profundidade=Math.round (_y);
qualclip.swapDepths(profundidade);

Funciona muito bem na verdade, mas acho que compromete a velocidade do jogo em computadores mais lentos, principalmente quando existem vários personagens se movendo ao mesmo tempo. Já pensei em usar um loop para verificar a posição _y de todos os movieclips da cena (com a Array _root e typeof) e rearranjá-los de acordo, mas isso provavelmente não melhoraria esse código. Já cogitei também usar profundidades definidas que faria com que a var profundidade não passasse de 10 se eu tivesse 10 elementos em uma fase mas não consegui chegar a um código satisfatório para isso. Outra opção que pensei seria que mesmo não sendo um jogo feito em tales (como o www.goldyard.net), eu poderia criar tales virtuais que serviriam somente para dar o swap com um if de Hittest.
Não sei se você já tentou fazer um jogo em vista isométrica mas se tiver alguma idéia será muito bem vinda. Se não pelo menos de uma avaliada nas opções. Qual seria a melhor na sua opnião?


Diego,

Não entendi muito bem o seu problema, mas creio que você queira fazer um jogo com ordenação em um eixo z para os personagens. Eu já fiz alguns experimentos, mas o assunto é muito individual, sendo que cada caso tem uma solução específica. Se puder me enviar o source do arquivo, talvez possa ajudá-lo. De qualquer forma, recomendo que você dê uma olhada em um experimento muito interessante criado pelo Dave Hayden, segue url abaixo.

http://www.opaque.net/~dave/ztest/ztest.fla

Jonas Galvez

0 comentário