ActionScript 3.0 :: More Than 1 MouseEvent For 1 Button?
Apr 21, 2010This is what I used to have in AS2
Code:
on (rollOver) {
gotoAndPlay(2);
[code].....
This is what I used to have in AS2
Code:
on (rollOver) {
gotoAndPlay(2);
[code].....
I have several stage event handlers to enable mouseovers over several dynamically generated moviecilps on the stage that then change their alpha to indicate the mouse is over that particular mc... fairly trivial (mcOver handler). Additionally, I also want to know what MC is clicked, so I update a public variable (public var activemc:Number) with the ID of the dynamic movieclip when the mouse is over it (using a hitTest to check, which is why the EventListener is added to stage and not to the MC), which is checked in the mcClicked handler:This is in the constructor:
//stage.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing);
//stage.addEventListener(MouseEvent.MOUSE_UP, stopDrawing);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mcOver);[code]....
However, the mouseover behaviour (alpha 0 when over, alpha 1 when out) stops working as soon as I click on any movieclip on the stage, and the mcClicked ID checking (below) stops working completely. I don't know if this is to do with focus:
private function mcClicked(event:MouseEvent):void {
myTextField.text = String(activemc); // activemc is a public var:Number with the movieclip //ID
}
I then tried adding the event handler for the stage mouse_move again and this gets the mouseover working again but only for 1 more click, after which it stops again:
private function mcClicked(event:MouseEvent):void {
myTextField.text = String(activemc); // activemc is a public var:Number with the movieclip //ID
stage.addEventListener(MouseEvent.MOUSE_MOVE, mcOver);
I have a MovieClip (call it base_mc) which is under a bunch of other MovieClips (call them subclips). The MovieClips on top are all mouseEnabled with MOUSE_OVER, CLICK, etc, event handlers. I want to capture the event of MOUSE_OVER (or ROLL_OVER) on the base_mc as well. Any time I am over one of the subclips I am also over the base_mc clip. How can I capture this event?
View 2 RepliesI'd like to know what is the difference between MouseEvent.CLICK & MouseEvent.MOUSE_DOWN. Because when i use MouseEvent.MOUSE_DOWN for a button to set full-screen view its doesn't work, instead of this MouseEvent.CLICK works. So what was the reason.
View 3 RepliesI'm making a button for the first time, and I wanted to use a full click to drive it. However, when I use addEventListener(MouseEvent.CLICK, onClickHandler); nothing happens when I click on it. When I use (with the rest of the code being identical) addEventListener(MouseEvent. MOUSE_ down, onClickHandler); it works like a charm.
View 6 RepliesWhat is the difference between MouseEvent.MOUSE_UP and MouseEvent.CLICK? Why should I use one of these over the other?
Code:myButton_btn.addEventListener(MouseEvent.MOUSE_UP, fNavigate, false, 0, true);
myButton_btn.addEventListener(MouseEvent.CLICK, fNavigate, false, 0, true);
I have a MOUSE_DOWN handler that creates a CLICK event listener on a child object. Naturally, as soon as you release the mouse button, if you happen to be over the child object, the CLICK event fires.I was disappointed to discover that event.stopImmediatePropagation doesn't interrupt the CLICK event from registering the MOUSE_DOWN as part of its detection cycle. It makes sense that it doesn't but still... disappointing.A MouseEvent.CLICK consists of detecting a MOUSE_DOWN on the object and then if it's followed by a MOUSE_UP without leaving the object, he event fires. I had hoped that by cancelling the MOUSE_DOWN event, it would clear that out of the CLICK buffer, but no such potatoes, alas.This could all be handled with a flag and a couple more MOUSE_UP and MOUSE_DOWN handlers, but dang, smacks of effort
View 2 RepliesI know for a simple URL/Email button I should be using:
ActionScript Code:
buttonName.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
navigateToURL(new URLRequest("mailto:df@davidfallows.net"), "_self");
}
However I'm working in a project where MouseEvent cannot be loaded for whatever reason... Are there any work-arounds for this?
i'm trying to create buttons that once clicked will keep their
Quote:
MouseEvent.MOUSE_OVER
state until a new button is clicked.currently my Quote:
MouseEvent.MOUSE_OUT
event is stopping this from happening.in basic terms, a simple visited link effect.
I have a button with a MouseEvent.CLICK listener. The CLICK event is being triggered when the button is pushed, mouse is down while rolled out, then released when rolled in on the button again. I do not want this to happen, the click event should not occur when the button is being dragged.
My flash file contains a large amount of buttons and click listeners, I would like to solve this problem with as little code as possible. What is the simplest solution to this problem?
I'm trying to make a custom menu for my website. Each of three main menu items contains a set of sub menu items that are button instances.I've managed to set it up like I want, where when you hover the mouse overtop the main menu item it animates beautifully, reveling the sub menu items buttons below it. However, once I touch the button instances themselves it seems to cancel out the mouse_event that caused the animation in the first place (rolling over the main menu item), and sends it back to it's first frame - essentially making the buttons within the submenus inaccessible.
View 2 RepliesI have the following:
rwBtn.addEventListener(MouseEvent.MOUSE_OVER, audioOver);
function audioOver(e:MouseEvent):void
{
var thisClip:MovieClip = e.relatedObject;
thisClip.alpha = 0;
}
I would like to change the alpha of the clip that is being rolled over. I don't know how to target the clip that is being rolled over. How do I do that?
I have a couple of buttons that slide up and down, when in the up state I add an X graphic to symbolize a a close button. However the X graphic seems to be blocking my button action.I have an example in the movie I've been working on >> here <<.There are 2 movies here, the big one if you click either blue tab you will see what I'm talking about, X button shows up, but clicking over the X area will not drop the button down. You have to click on blue button area to drop the button back down.Now I've made a smaller test movie adding the X button basically the same way and if you will notice it works fine (will animate to the right even if you click over the X graphic)Here is my code in the Big movie (I hid the tween code so it won't be so long):
function handleButtonClick(event:MouseEvent):void {
var button:MovieClip=event.target as MovieClip;
var id:Number=Number(button.name.split("button")[1]);
[code]....
how can i "emulate" a MouseEvent, that has not been initiated by a button with a eventListener (e.g. just by a simple function call) and how can i pass variables into it to switch the event.types ?
public function myMouseEvent(event:MouseEvent):void
{
switch (event.type)
[Code]....
What's difference between "$event:MouseEvent" and "e:MouseEvent". What do they do?
View 4 RepliesWhat does "$" means in actionscript 3? What's the difference between "$event:MouseEvent" and "event=MouseEvent"?
View 2 RepliesI linked a button to a .php file, but now i have the problen that if I try to do it again, I get an error : 1021 Duplicate function definition
ActionScript Code:
myButton.addEventListener(MouseEvent.CLICK, onClick);
function onClick(evt:MouseEvent):void
[code]......
I want to simplify some event handling of an flash app (if that is possible).. so i thought to extend MouseEvent in some way to do it.What i need is OVER, OUT and CLICK callbacks with an extra parameter (an object)... or something like that..I tried:
Code:
package com.ui{
import flash.events.MouseEvent;
[code].....
I've created a function called dragItem() that I call with the MOUSE_DOWN event. I've got it working....kind of. I can access the function when the mouse is clicked and I can even get the name of the instance when the mouse is down. I'm trying to use the same logic to get the single object to allow a drag. see my code below...
function dragItem(event:MouseEvent):void { var instName:String = event.target.name; trace(instName); trace(event.target.width); event.target.startDrag(); event.target.removeEventListener(MouseEvent.MOUSE_DOWN,dropItem); event.target.addEventListener(MouseEvent.MOUSE_UP,dropItem); }
I get this error when I try to drag the item...ReferenceError: Error #1069: Property startDrag not found on flash.display.Loader and there is no default value. at Main/::dragItem()
but1.addEventListener (MouseEvent.CLICK,play1) ;
function play1 (event:MouseEvent) :void{
gotoAndStop("Wales 1") ;
}
This is my code but the MouseEvent is not recognised
I am develop on Air for iPad app, just wonder is TouchEvent more efficient or MouseEevent is doing fine. i am talking about performance wise, things like doing drag and drop and ect...
View 1 RepliesI dynamically create images in a loop (flash builder 4.5) and when I set mouse click event, I'm using this:
image.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void{fromThumbnail(e,i)});
to pass i. However, when I click on any image, the function thumbnail prints the last i.
Is there solution for this problem?
Why is working properly in Internet Explorer, but not in FireFox 3.0
View 0 RepliesI have two sprites A and B, both are irreuglar drawn shapes (both with a transparent fill) that overlap certain points. The current result is B on top (though which is on top is not really relevant, as the same problem will exist if A is on top). They are both children of the same UIComponent.
Both are listening for the MouseEvent.MOUSE_MOVE event. It is to occur when a corner on either shape is passed over by the mouse. Though, when the mouse moves over the corner of A and this corner is behind B the MouseEvent is never raised.From my investigation I've found when i turn the fill off on the sprites and just draw the outline of the shape the mouse event will raise, but this is not what is wanted. how can I get *both* the objects listening and responding even when the corners of one is overlapping the other?
I've googled around and seen this topic at a million places but I just don't get the solution![url]...
Like in the image above. My red movieclip is dragable when mouse_down and dropped when mouse_up. At the same time I want the underlying Blue MC to get it's mouseEvents but if the Red MC is overlapping it, it won't react. What do I do to make both active?
Do you have to perform some kind of VooDoo magic to get MouseEvent.DOUBLE_CLICK to workhere's my code:
Code:
import flash.events.*;
box_mc.addEventListener(MouseEvent.DOUBLE_CLICK, openFolder);
[code].....
I'm making a game where you keep a ball in the air by clicking on it, but the mouseevent doesn't always register.
PHP Code:
var debug:Sprite = new Sprite();
var sine:Number = 0;
var cosine:Number = 0;
var hypotenuse:Number = 0;
[code]....
The only thing I have on the stage/library is a circle named 'ball_mc' width origin in the center.
I'm building a grammar excercise where I've got 24 drag'n'drop cards (movieClips), that I can drop into two 'slots' or dropTargets. Each card has its corresponding card, and when the right cards are dropped in the dropTargets, they get a 'well done' message, and a button appears so the user can go on to matching the remaining cards. When the button is clicked, I want the dropped cards to simply disappear.
View 7 RepliesHow can I trigger a MouseEvent from a nested MC?
Basically I have a Sprite that contains a Shape. I'd like that Shape to trigger the listener I've attached to it however, Flash just thinks the container Sprite is being clicked every time.
I currently have an AS3 fla with a couple of mouseEvent functions but now the client wants to add a KeyboardEvent as well to the same exact functions. Can I add another eventListener to that without having to create a second function? It would be a huge waste of code if I did. Here's what I currently have in truncated form:
rightArrow.addEventListener(MouseEvent.CLICK, slide_right);
leftArrow.addEventListener(MouseEvent.CLICK, slide_left);
function slide_right(e:MouseEvent):void {
[code]....