..:: MX Studio Fóruns ::..: AS3 ajuda! | mouse over - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

AS3 ajuda! | mouse over

#1 User is offline   leo maia 

  • Group: Membros
  • Posts: 6
  • Joined: 04-April 09

Posted 24 April 2009 - 05:46 PM

existe alguma maneira de fazer o meu cursor virar maozinha (cursor.gotoAndStop('over')), sem precisar por isso em todos os botoes?

pq esse cursor vai estar em um menu, que vai abrir outros swfs por cima, mas o cursor tem q virar maozinha se for link embaixo dele

e eu nao poderia por em cada botao um eventlistener de rollover do mouse, entendem?


tem como fazer isso? existe alguma funcao a lá objects under point pra saber se o objeto abaixo do mouse é clicavel?


obrigado

[]'s
0

#2 User is offline   Mozart Petter 

  • Group: Moderadores
  • Posts: 624
  • Joined: 28-July 04

Posted 24 April 2009 - 06:15 PM

Qualquer objeto derivado de Sprite contém a propriedade buttonMode, basta defini-la como true e pronto.

CODE
myMovie.buttonMode = true;


Abraço
0

#3 User is offline   leo maia 

  • Group: Membros
  • Posts: 6
  • Joined: 04-April 09

Posted 24 April 2009 - 08:28 PM

vc nao entendeu!

eu tenho um movieclip que está servindo de cursor pra mim

CÓDIGO
//tentando cursor
Mouse.hide();
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
stage.addEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler);
cursor.mouseEnabled = false;
cursor.mouseChildren = false;

function mouseLeaveHandler(e:MouseEvent) {
    cursor.visible = false;
};

function mouseMoveHandler(evt:MouseEvent):void
{
    // whenever the mouse moves, place the cursor in the same spot
    cursor.visible = true;
    cursor.x = evt.stageX;
    cursor.y = evt.stageY;
    setChildIndex(cursor, numChildren - 1);
    evt.updateAfterEvent();
};

//cursor


só que seguinte, eu tenho meu movieclip cursor e no frame 'normal' esta a setinha e no frame 'over' esta a maozinha

procurei e procurei e soh achei uma maneira de fazer o mouse virar maozinha quando esta em cima de algo clicavel

botando um eventlistener para cada algo clicavel q eu quero q faca isso

o q eu quero saber é se existe alguma maneira de identificar q o objeto abaixo do mouse é clicavel, que o objeto abaixo do mouse possui a propriedade buttonMode = true; e assim, dentro da funcao mouseMoveHandler eu posso botar para que se o objeto é clicavel, cursor.gotoAndStop('over') se nao, cursor.gotoAndStop('normal')
0

#4 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 25 April 2009 - 01:01 AM

Da maneira que quer eu não vejo algo possível. O que você pode fazer é usar um addEventListener usando o evento de Mouse MOUSE_OVER, que é o evento relativo ao onRollOver para todos os seus botões, passando sempre a mesma função. Dentro dessa função você verifica se o alvo tem o buttonMode definido como true. Exemplo:

CÓDIGO
mc1.buttonMode = true;
mc2.buttonMode = false;
mc3.buttonMode = false;
mc4.buttonMode = true;
mc1.addEventListener(MouseEvent.MOUSE_OVER, mcOver);
mc2.addEventListener(MouseEvent.MOUSE_OVER, mcOver);
mc3.addEventListener(MouseEvent.MOUSE_OVER, mcOver);
mc4.addEventListener(MouseEvent.MOUSE_OVER, mcOver);
function mcOver(event:MouseEvent):void {
    if(event.target.buttonMode == true) {
        trace("sim");
    } else {
        trace("Não");
    }
}


Onde mc1, mc2, mc3 e mc4 são as instancias do seus MovieClips ou botões.

[]s
0

#5 User is offline   leo maia 

  • Group: Membros
  • Posts: 6
  • Joined: 04-April 09

Posted 25 April 2009 - 10:56 AM

mas a questao é:

esse cursor esta em um menu.swf

esse menu.swf carrega outros 7 submenus, e esses 7 submenus carregam outros 5 swfs diferentes

entao em cada um desses 35 swf, eu tenho q por em CADA movieclip o codigo de rollover do mouse?

era justamente isso q eu queria evitar, até pq vai ficar uma confusao de parents nesses movieclips dentro dos swfs carregados

nossa, num é possivel q até hj a adobe nao tenha pensado nisso... tem tanto flash com cursor custom e gente, tinha q ter uma maneira mais facil de confiurar isso

alguma maneira de checar se o mouse original do windows está no modo maozinha, ai muda o cursor custom, se nao, volta pro cursor normal...

ou checar o getobjectunderpoint(mouse.x, mouse.y) e saber se ele possui a propriedade button mode...

enfim, bad :/
0

#6 User is offline   Mozart Petter 

  • Group: Moderadores
  • Posts: 624
  • Joined: 28-July 04

Posted 25 April 2009 - 05:15 PM

Você pode criar uma classe base e associá-la aos elementos que tu deseja que tenham este comportamento.

CODE
/**
* © 2009 - mozartpetter.com
*/
package app.menu
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.ui.Mouse;

/**
* BaseMenuButton Class
*
* @author Mozart Petter (contato@mozartpetter.com)
*/
public class BaseMenuButton extends Sprite
{
/**
* @private
*/
private var _cursor:MovieClip = null;

/**
* Cria uma nova instancia de BaseMenuButton.
*/
public function BaseMenuButton()
{
super();

this.addEventListener(Event.ADDED_TO_STAGE, this.handleAddedToStage);
}

//---------------------------------------------------------------------------------------------------
//
// Protected Methods
//
//---------------------------------------------------------------------------------------------------

/**
* Configuracoes iniciais.
*/
protected function setup():void
{
// Criando novo cursor.
this._cursor = new OverCursor();

// Adicionando cursor ao palco.
this.addChild(this._cursor);

// Escondendo cursor.
this._cursor.visible = false;

// Adicionando evento ROLL_OVER.
this.addEventListener(MouseEvent.ROLL_OVER, this.handleRollOver);
}

/**
* Oculta o cursor personalizado.
*/
protected function hideMouseCursor():void
{
// Ocultando cursor personalizado.
this._cursor.visible = false;

// Exibindo cursor do mouse.
Mouse.show();
}

/**
* Define a posição do cursor.
*/
protected function setCursorPosition():void
{
this._cursor.x = this.mouseX;
this._cursor.y = this.mouseY;
}

/**
* Exibe o cursor personalizado.
*/
protected function showMouseCursor():void
{
// Exibindo cursor personalizado.
this._cursor.visible = true;

// Escondendo cursor do mouse.
Mouse.hide();
}

//---------------------------------------------------------------------------------------------------
//
// Private Methods
//
//---------------------------------------------------------------------------------------------------

/**
* @private
* Handler do evento ADDED_TO_STAGE.
*
* @param event Objeto Event.
*/
private function handleAddedToStage(event:Event):void
{
this.setup();
}

/**
* @private
* Handler do evento MOUSE_MOVE.
*
* @param event Objeto MouseEvent.
*/
private function handleMouseMove(event:MouseEvent):void
{
// Posicionando cursor.
this.setCursorPosition();
}

/**
* @private
* Handler do evento ROLL_OUT.
*
* @param event Objeto MouseEvent.
*/
private function handleRollOut(event:MouseEvent):void
{
// Escondendo cursor.
this.hideMouseCursor();

this.removeEventListener(MouseEvent.ROLL_OUT, this.handleRollOut);
this.removeEventListener(MouseEvent.MOUSE_MOVE, this.handleMouseMove);
this.addEventListener(MouseEvent.ROLL_OVER, this.handleRollOver);
}

/**
* @private
* Handler do evento ROLL_OVER.
*
* @param event Objeto MouseEvent.
*/
private function handleRollOver(event:MouseEvent):void
{
// Exibindo cursor.
this.showMouseCursor();

// Posicionando cursor.
this.setCursorPosition();

this.removeEventListener(MouseEvent.ROLL_OVER, this.handleRollOver);
this.addEventListener(MouseEvent.MOUSE_MOVE, this.handleMouseMove);
this.addEventListener(MouseEvent.ROLL_OUT, this.handleRollOut);
}

}

}


Desta forma, qualquer elemento que extender a classe BaseButtonMenu terá o cursor personalizado.
O objeto OverCursor é o linkage do seu MovieClip de cursor na biblioteca.

Abraço
0

#7 User is offline   leo maia 

  • Group: Membros
  • Posts: 6
  • Joined: 04-April 09

Posted 26 April 2009 - 01:15 PM

de qualquer forma vou ter q ir em todos os swfs do negocio e por em todos os movieclips que possuem rollover do mouse a classe?

da no mesmo fazer isso ou adcionar o eventlistener, o q eu queria evitar é ter que por o codigo em todos os movieclips, achava que poderia ter uma maneira mais inteligente de fazer isso

pensei no objectsunderpoint que da os objetos que estao abaixo do ponto, o problema seria verificar o buttonmode desses objetos, nao funciona aqui

enfim, obrigado
0

#8 User is offline   Mozart Petter 

  • Group: Moderadores
  • Posts: 624
  • Joined: 28-July 04

Posted 26 April 2009 - 09:24 PM

Na verdade Leo, isso sempre vai depender único e exclusivamente da estrutura da tua aplicação. Se você tiver, por exemplo, 1 tipo de objeto para os itens do Menu, seria apenas 1 MovieClip a ser alterado...
Se tiver um botão específico, dentro de um determinado conteúdo, e desejasse o mesmo efeito, bastaria importar a classe com o cursor na classe do botão em questão.

Vai muito da estrutura cara. smile.gif

Se eu puder ajudar em mais alguma coisa, avise.

Abraço
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)