Olá, Visitante. Por favor Entre ou Registe-se se ainda não for membro.
20 de Novembro de 2008, 22:35:29
Início Ajuda Pesquisa Entrar Registe-se
Notícias: Problemas com o fórum? Contacte-nos.


+  Redcodestudio
|-+  Flash Flex RIA Communities
| |-+  Flash Developer
| | |-+  [Dúvidas] Flash Developer (Bloquear conteúdo)
« anterior seguinte »
Páginas: [1] Ir para o fundo Imprimir
Autor Tópico: [Dúvidas] Flash Developer (Bloquear conteúdo)  (Lida 2412 vezes)
benji
Iniciado
*
Offline Offline

Mensagens: 11


Ver Perfil
« em: 19 de Junho de 2007, 13:43:07 »

Boas,

tenho uma pequena grande dúvida. Fiz uma pequena galeria num site que ando a construir em flash. Quando o utilizador carrega numa imagem esta aumenta para se visualizar melhor e depois basta clicar na imagem para a fechar. Ora o que eu gostava de fazer mas não vejo maneira de conseguir era: o utilizador clica na imagem pequena, esta aumenta, e eu queria impedir o utilizador de mexer ou clicar no resto dos botões do site sem antes fechar a imagem...??

Não sei se perceberam a ideia... Se me conseguirem ajudar agradecia imenso é que não estou mesmo a conseguir fazer isso!!
Registado
gimbras
Emblema de Prata
****
Offline Offline

Mensagens: 1101



Ver Perfil WWW
« Responder #1 em: 19 de Junho de 2007, 16:49:15 »

Tens que desactivar os botões que não queres que sejam clicáveis.

Código:
botao_btn.enable=false;

Podes também tirares a visibilidade, além de os desactivares.

Cumps.
Registado

benji
Iniciado
*
Offline Offline

Mensagens: 11


Ver Perfil
« Responder #2 em: 20 de Junho de 2007, 01:06:47 »

Boas,

quando a imagem ta aumentada coloquei-a num layer, e tenho um layer a parte com actionscript. Esse código coloco-o nesse layer e quando a imagem tá aumentada certo?? Se for assim já tentei mas nao "bloqueia" o botão...  Huh?
Registado
alftuga
Aprendiz
**
Offline Offline

Mensagens: 202


Ver Perfil WWW
« Responder #3 em: 20 de Junho de 2007, 15:01:41 »

podes por o codigo aqui no forum que esta a gerir isso tudo por favor.
Registado
yarcub
Aprendiz
**
Offline Offline

Mensagens: 138


Ver Perfil
« Responder #4 em: 20 de Junho de 2007, 15:14:41 »

A técnica que aconselho é criar um movieclip que cubra todo o Stage e apanhe todos os eventos do rato.
Depois é passar o movieclip da imagem para a depth mais alta.

Exemplo:
(Cria um botão no stage com instance name "btn")
Código:
var ref:Object = this;
var mc:Object = {};

btn.onRelease = function(){
mc = ref.createEmptyMovieClip("sd",ref.getNextHighestDepth());
mc.beginFill(0x000000,60);
mc.lineTo(0, Stage.height);
mc.lineTo(Stage.width, Stage.height);
mc.lineTo(Stage.width,0);
mc.lineTo(0,0);
mc.endFill();

mc.onRollOver =  function(){
this.useHandCursor = false;
}

mc.onRelease = function(){
this.removeMovieClip();
}
}
Registado
gimbras
Emblema de Prata
****
Offline Offline

Mensagens: 1101



Ver Perfil WWW
« Responder #5 em: 20 de Junho de 2007, 16:35:42 »

O que faria era assim:

Se o botão que abre a imagem for clicado, cria-se uma variável com um dado valor.
Se o botão que fecha a imagem for clicado, a mesma variável fica com outro valor.

E depois faz-se: se a variável que referi tiver o valor X (por exemplo), os botões que escolheste ficam desactivados. Se não tiver esse valor X, os botões ficam activos.

O yarcub já está a criar um movieclip via actionscript, talvez seja mais difícil de entender.
É à escolha do freguês. Cheesy

Cumps.
Registado

alftuga
Aprendiz
**
Offline Offline

Mensagens: 202


Ver Perfil WWW
« Responder #6 em: 20 de Junho de 2007, 23:46:27 »

Código:
var pista:MovieClip = this;
// metes dentro do array todos os nomes dos teus botões
var listaBts:Array = new Array(bt0, bt1, bt2);
var numBts:Number = listaBts.length;
function rel0() {
// aumento a imagem e vamos desactivar todos os bts menos o nosso
desactivaBts(this);
this._xscale = 150;
this._yscale = 150;
// tb vamos dar um outro comportamento ao nosso evento onRelease
// quando vais clicar uma segunda vez no bt ele tem que reagir de uma outra maneira
this.onRelease = rel1;
}
function rel1() {
// imagem volta ao seu valor inicial
// o meu bt volta a ter o primeiro comportamento
// e vamos activar todos os bts
this._xscale = 100;
this._yscale = 100;
this.onRelease = rel0;
activaBts();
}
function ov() {
// efeito over
}
function out() {
// efeito out
}
function desactivaBts(p) {
for (var i = 0; i<numBts; i++) {
if (listaBts[i] != p) {
listaBts[i].enabled = false;
}
}
}
function activaBts() {
for (var i = 0; i<numBts; i++) {
listaBts[i].enabled = true;
}
}
function init() {
for (var i = 0; i<numBts; i++) {
listaBts[i].onRelease = rel0;
listaBts[i].onRollOut = out;
listaBts[i].onRollOver = ov;
}
}
init();


e como diz o Gimbras
É à escolha do freguês!
« Última modificação: 20 de Junho de 2007, 23:50:21 por alftuga » Registado
benji
Iniciado
*
Offline Offline

Mensagens: 11


Ver Perfil
« Responder #7 em: 21 de Junho de 2007, 00:31:44 »

Muito obrigado a todos pela grande ajuda.  Cheesy

Experimentei todas as maneiras que voces puseram mas foi com esta última que percebi um pouco melhor e após mudar algumas coisas lá pus isto a funcionar  Cheesy .

Deixaram aqui um freguês contente Grin
Registado
yarcub
Aprendiz
**
Offline Offline

Mensagens: 138


Ver Perfil
« Responder #8 em: 21 de Junho de 2007, 18:18:57 »

É sempre bom para fidelizar os clientes.  Grin

Mas a solução que expliquei ñ é assim tão difícil quanto possa parecer.
Ñ postei foi o código ajustado à tua solução, apenas um exemplo para um copy&paste rápido no flash e ajudar a compreender a solução.
Registado
Páginas: [1] Ir para o topo Imprimir 
« anterior seguinte »
Ir para:  


Entrar com nome de utilizador, password e duração da sessão


Powered by MySQL Powered by PHP Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
XHTML 1.0 válido! CSS válido!
Página criada em 0.075 segundos com 19 procedimentos.