LUIZ HERRERA (117 pts)

BÁRBARA TOSTES (64 pts)

EDUARDO CARREGA (150 pts)

GABRIEL SPORCH (53 pts)

STICKMAN (155 pts)

DAUTON JANOTA (255 pts)

EDUARDO WALMOTT (226 pts)

HELEN TRIOLO (444 pts)

MARLOS ALVES CARMO (90 pts)

EDUARDO PERROUD (52 pts)

IRAPUAN MARTINEZ (45 pts)

NETO LEAL (116 pts)
Treinamento PontoFlash de Flash e ActionScript

Como eu faço para colocar um arquivo som nos botões?

Calcular distância de um movieclip invisível.

Gostaria de saber pra que servem os levels quando a gente faz um load variables?

Galera ávida por colocar vídeo nas aplicações em Flash.

Queria ver se é possível fazer com o que o som permaneça parado mesmo quando o movie se reinicia.

Quero um movieclip arrastado que ao se deparar com umas linhas, não consiga atravessar.

Como mascarar uma parte de uma imagem jpg carregada dinamicamente com setMask?

Tem como colocar botões “próximo texto” e “texto anterior” quando abro com load variables?

Como faço para um certo objeto seguir o mouse, mas não por toda a cena?

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

Porque os botões em um Movie Clip não estão funcionando para outra cena?

É possível redimensionar um jpg aberto dinamicamente?

Como fazer um cursor customizado mostrando a mãozinha no mouseOver do botão?

Dá para fazer animações 3D no Flash?
Desenhando uma linha entre dois pontos no Flash 5.

Fireworks, o patinho feio da Macromedia.

Macromedia Flex

Tell Target e Linhas do tempo independentes

Parâmetro - Get microphone().

Como usar o Flash com o FrontPage?

Novas propriedade de botões no FireworksMX

Funções de actionscripts

Integração Flash + Fireworks

Controle de MovieClip via Microphone.get();

Desvendando cookies

Botão avançar e recuar.
Bola de futebol

Chinese dragoon

Hidden menu

Tangran

Primeira letra maíscula

Texto com fade

Caneta

Bounce

Mouse delay

Lightball

Mira mouse

Menu Tsunami
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