• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

gimbras

Ciclo para linkar

2 mensagens neste tópico

Oias!

Ando a linkar montes de movieclips e resolvi usar um ciclo FOR (que de resto já é usado para chamar os movieclips). E usar a variável criada no meio do URL para facilitar as coisas.

O problema é que não sei concatenar parte do url com a referida variável.

O AS é o seguinte:

for (var i:Number = 1;i<=20;i++){
this["mc_"+i].onRollOver = function() {
var numero:Number = Number(this._name.split("_").pop());
this.onEnterFrame = function () {
  _root["cap"+numero]._alpha += (100-_root["cap"+numero]._alpha)/3;
  _root["cap"+numero]._x -= (_root["cap"+numero]._x-_xmouse)/2;
  _root["cap"+numero]._y -= (_root["cap"+numero]._y-_ymouse)/2;
};
};
this["mc_"+i].onRollOut = function() {
var numero:Number = Number(this._name.split("_").pop());
this.onEnterFrame = function() {
  _root["cap"+numero]._alpha += (0-_root["cap"+numero]._alpha)/3;
};
};
};

mc_1.onRelease = function () {
getURL("teste.php?where=1", "_self")
}

Ora são montes de movieclips e andar a linká-los um a um demora bastante.

Pensei em criar outro ciclo FOR deste género:

for (var i:Number = 1;i<=20;i++){
this["mc_"+i].onRelease = function() {
getURL("teste.php?where=1", "_self")
};
};

Mas isso só linkaria todos os mc ao mesmo url. Eu queria que cada mc tivesse um url onde a parte where=1 fosse sendo somado 1 valor. Ou seja, o mc_1 ia para where=1, o mc_2 para where=2, etc...

Também se possível ser eu a indicar a partir de que número é que se começaria a somar os links.

Por exemplo no where=2, o 2 é o id de uma tabela da base de dados. Vamos supor que a base de dados já vai no ID 386, eu quero que comece a somar a partir daí mais 1. Ficando teste.php?where=387,teste.php?where=388, etc...

Já tentei isto

for (var i:Number = 1;i<=20;i++){
this["mc_"+i].onRelease = function() {
getURL("teste.php?where="+i+"", "_self")
};
};

Só que o link gerado é 21, ou seja começa dps do ciclo chegar aos 20.

Peço então a vossa ajuda.

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom,

já descobri a resposta.

Temos de obter o valor actual da variável 'i' que está a ser incrementada (que está a ser contada), e não o seu valor na hora que o onRelease é chamado. Para fazer isto, existe a função assignLink() que obtem a variável 'i' como um parâmetro e usa-la para o link. Porque o parâmetro é passado como um valor, ele irá conter o valor real de  'i'.

O número a partir do qual vamos começar a adicionar valores para os links serem gerados é o segundo parâmetro. Temos de ter em atenção o parâmetro linkID. De momento está codificado, mas pode ser um número vindo de uma base de dados.

Só temos também de ter em atenção que o valor obtido com o linkID é um número a mais do que o número com o qual iniciamos a contagem, porque se soma sempre o valor da variável 'i' em cada chamada. Portanto para ter o linkID a começar em 381, o parâmetro tem de ser 380.

function assignLink(mcID:Number, linkID:Number){
_root["mc_"+mcID].onRelease = function(){
	getURL("test.php?where="+linkID+"", "_self");
}
}

// chamada a partir de um ciclo
for (var i:Number = 1;i<=20;i++){
// ...
assignLink(i,380+i);
// ...
}

Resolvido.

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora