ActionScript 3.0 :: Dynamic MC's + Listener - Can't Move Mouse Up And Down A Popped-up Sub-menu Without The Mouse_out Function Triggering
Aug 9, 2011
Overview: I'm creating a menu where buttons have a sub-menu that pops-up when you hover over the main buttons. The menu will eventually be populated by scanning labels in the timeline, and that seems to be working fine so far. Everything works good enough except you can't move your mouse up and down a popped-up sub-menu without the mouse_out function triggering. The mouse_out listener seems to be applied to all individual sub-buttons when I'd like it to apply only to the parent MC container of each sub-menu.
Is there a problem with the way I'm assigning sub-buttons to container MC's ? I've explored using an array to store the MC's as well, but still had the same listener issue. Could someone look at my FLA? If you do a find for "PROBLEM", that is a good place to start.
If I set the mouseEnabled property of a button to false, it automatically triggers the MOUSE_OUT (and ROLL_OUT) event.Is there a way of avoiding this? I don't want any events to be active after setting this property. I attached an FLA, also here is the code:
I am having a rather annoying problem!! Basically my code is triggering the event when it definitely should not be...Here is my layout:
Node container - holds all my Sprites and has a MOUSE_OVER (<works fine) and a MOUSE_OUT / ROLL_OUT (<neither of which work) Sprites in Node container - contain text + images but have a Shape hitbox on the top layer meaning there should be no confusion!Basically, I check to see if anything rolls over my node container with MOUSE_OVER which triggers correctly and allows me to target which sprite the user has rolled over.
However, when you move the mouse over the sprites (but not outside!) if constantly triggers my MOUSE_OUT and ROLL_OUT events, it makes no difference which one I use...This is is really frustrating and I can not think of even an ugly work around in my code to solve this, it would be nice to fix it and add it to my knowledge later.
EDIT : Actually the MOUSE_OVER triggers as soon as the OUT event has triggered incorrectly.
EDIT 2 :Basically I have a custom cursor and this is the root of the problem, it thinks I am rolling over the cursor and then out constantly.. OK so how can I Ignore my mouse cursor image? So it doesn't think I am rolling out all the time..?
I have a menu bar that when a user mouses over it, a second menu slide out beneath it.when I move my mouse off the first menu bar, the second menu bar disappears. Im not sure how to organize my hit areas so that the second bar stays even if I mouse off the first menu bar.
I'm getting an unusual behavior that I can't seem to get to the bottom of. When I run this, if I move in the swf area it traces normally on mouse move. To be expected.
But it's tracing for the move event when I click anywhere on screen. If I click and drag, it traces as if I were moving in the swf area of the browser.
Here's the code. I've simplified to it's barebones. Just put this in in an empty AS3 project in Flex called "Engine" - sans quotes obviously.
As a workaround I've add the MOUSE_MOVE one MOUSE_OVER and remove it on MOUSE_OUT. But the behavior still seems quite unusual and I'd be interest in understanding why it's happening.how I can keep the events constrained to the actual stage of the application?
I'm getting an unusual behavior that I can't seem to get to the bottom of. When I run this, if I move in the swf area it traces normally on mouse move. To be expected.But it's tracing for the move event when I click anywhere on screen. If I click and drag, it traces as if I were moving in the swf area of the browser.Here's the code. I've simplified to it's barebones. Just put this in in an empty AS3 project in Flex called "Engine" - sans quotes obviously.
Ok I have this 100% width/height Flash embedded and when the user moves the mouse I want to display a panel, which disappears after x seconds if there is no more mouse movement.
I think I need an addEventListener, but I am not sure MOUSE_MOVE is the correct one. When the mouse stops moving I need to start x seconds to hide the panel, so I think with a timer?
In my first AS3 project (not used Flash since AS1) I need to use a custom movie clip as a cursor and detect clicking on a button. Using the code below, the custom cursor works as expected, but I am unable to capture clicking on the button.
If I comment out the first line, the trace for clicking works as expected. I have tried changing the order of the event listeners, applying the follow to the button rather than the stage, but cannot get both to work together.
stage.addEventListener(MouseEvent.MOUSE_MOVE,follow); start_button.addEventListener(MouseEvent.MOUSE_UP, playPhrase); function playPhrase(event:MouseEvent) {
I have a highlighting border that tweens to several buttons with MOUSE_OVER listeners. The MOUSE_OVER listener also increases alpha. A CLICK listener starts a gotoAndPlay function. On MOUSE_OUT, they revert back to lower alpha. However, here is where I would like to have the highlighting border tween to the last clicked button. Here's what I have so far:
I have a menu inside flash. It's a drop down menu and it only shows options when it is hovered over with the mouse.
[Code]...
On the menu I want to have normal buttons but the problems is when I move the mouse over the buttons (Which are ontop of the menu) it thinks I want to hide the menu.
I have an MC on my stage (button2) which has certain properties.What I want is to hover over the button and get a bunch of child buttons appear above the button. This works fine, except I cannot get the mouse_out to work properly on the child buttons. I want to be able to move my cursor across the various child buttons, but when I actually move the cursor outside the container of the child buttons that is when I want them to disappear. Right now what's happening is if I mouse_out from ANY child button, they disappear.import
I have a listener that calls a function which sets up everything on the stage exactly where and how I want it, works great. However..I also use the same function for my initial setup, and it's not triggered until/unless someone resizes the window, and as a result, everything is a mess until the window is resized.I could just duplicate the relevant bits in a separate function, but that seems needlessly redundant.Is there a way to trigger the function upon the initial load without waiting for a resize event?I would just call the function directly at the end of the script, but it expects a parameter that I can't figure out how to pass it.[code]
I've got the following problem: I have a button with two listeners: a mouseover and a mouseout. When I mouseover I trigger a TweenLite x tween that tweens the position of a textfield inside the button. It tweens back on the mouseout.
This is the code: btn.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); btn.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); private function onMouseOver(e:Event):void{ TweenLite.to(e.target.lbl_txt, .2, {x:12}); }private function onMouseOut(e:Event):void{ TweenLite.to(e.target.lbl_txt, .2, {x:8}); }
When I am already hovering the button before the listeners are set and then the listeners are set I get this error: ReferenceError: Error #1069: Property lbl_txt not found on flash.text.TextField and there is no default value. at packagename::Main/onMouseOut()
I am trying to create a project where I have a homemade button with a label component inside converted to a MovieClip. I have added an event listener, which triggers successfully when I move into the MovieClip, but retriggers when I move into the label within the MovieClip. Is there anyway to tell it to stop retriggering and act as a single MovieClip, or would it be simpler to break down and just try to customize the Button component?
I am trying to essentially pass a string as a function name into an event listener, but I am not sure how to approach this. Is there a way to convert a string into a function?
Here is some code I have for me to show you what I am doing.
package{ //some import statements public class changes extends MovieClip{
Code: var nav:Boolean = true; var element:String = "home"; [code]....
Its so that a menu will move right across the screen if the variable is true, and if its false, it'll move left back to its original position.... i achieved this using a motion tween and telling the mc to go to the frame and play, but that didn't work in the end because if the menu bar was on the left side, and it was told to move to the left, then it would disappear,and appear on the other side.... so in other words it screwed up
I've found great tutorial about creating XML menu. Originally in the background of button was dynamicaly created shape. AS was adding filter to the shape on MOUSE_OVER state. I created movie clip and wanted to use gotoAndPlay() action to go to one of frames in movie clip on MOUSE_OVER state and MOUSE_OUT. Here's the problem. I've tried few solutions but I failed :/ Always was something wrong, often nothing was working.
[URL]Did u notice that the video automatically became fullscreen if the mouse doesn't move for a specified time.How can trigger a function if the mouse doesn't move for sometime?
I am developing a website with nav items that cover the whole stage from top to bottom (see altered image below) and it is pretty easy for the user to exit the stage with their mouse, not triggering the MouseEvent.MOUSE_OUT events required to "turn off" said nav items.
Should I be using Event.MOUSE_LEAVE to detect when the mouse has left the stage, and turn off any enabled nav items? That is what I been trying to do, but have had trouble getting any output from my listener. Any ideas?
I guess that my problem is really simple, but I have no idea, how to do it.. The idea is simple: I need to make dynamic menu with mouse over effect. Button and hover are from library. When I go with mouse on button i want to make hover visible, but I have no idea how to get to the hover, because there is no e.target. Look into the code:
I have buttons that have mouse_over, mouse_out and CLICK events. But when I click the button it takes me to another frame and the mouse_out event tried to fire.
Basically I need a dynamic text field to be invisible on rollover and when you move your mouse off it, it becomes visible again. I have it working (see code below) however when the cursor is over the field and the cursor moves slightly over the area (still keeping it invisible) the cursor flickers between the normal arrow pointer and the text cursor. Is there a way I can stop this? Is there a better way to do this rollover that would prevent it?
I need to Automate the Page flip where the user has no control. Make it into an animation per say. I know it can be done. But I can't seem to figure out how. I can make just the first page. But I can't make it keep going. You guys know what I'm talking about right?[URL] Here's the code and notes...
I have designed a menu that When you mouse over it, a custom cursor appears. When you mouse down it disappears and when you mouse up it returns. If you happen to mouse down and then drag the mouse off of the menu (whilst in mouse down) and then mouse up outside the menu, the custom cursor disappears. All good. The only issue is: If you happen to mouse down on the menu and then drag the mouse off of the menu AND off of the stage, i.e the SWF (whilst in mouse down) and then mouse up completely off of the stage, the custom cursor appears at the point it left the menu. I have tried to fix this using MOUSE_LEAVE but this dosnt work when the mouse button is pressed down. I have attached an FLA, SWF and the AS below.
I strolled across something neat on a radio website [URL] and I really like how they do the flash on the top left. Below is the link to the actual SWF for bigger so that you can see what the SWF looks like. on the link above, you can move your mouse over the squares and it pops up a little window. You can even click on that. Here is the link to the SWF. [URL]
I am creating XML menu where the link names and target functions are coming from xml. My problem is that I can't pass target functions to MouseEvent.CLICK event. I have tried to read target functions from XML to a variable and put that to MouseEvent.CLICK event like this:
So, I've always struggled with the best way to do this. I have a method, but it seems like there's gotta be a better way.
Say you have an array of menu items
Code: var menuArray:Arrary = [item1,item2,item3]; , and onRollOver they receive a certain color:
[Code]....
I realize that there's some additional code that would need to be written here, but you get the point. Basically what I'm doing is disabling the button so nothing happens onRollOut. Then I'm setting all the buttons colors to null, but changing whichever button was flagged as active to red.
It seems like a really ghetto way of doing this, and you notice a visible flicker in color of the active menu item if there are a lot of items in your array. Does anybody know a better way to handle this?
I am trying to make a class that plays an animation from code when the user clicks on a MovieClip.I copied the animation from the time line using "Copy motion as actionscript3", and made a class that plays it. However, when I try to add the mouse click functionality I run into problems:
1. If there are several instances of the class on the stage, clicking on one instance plays the animation on that instance, as expected. But if I then click on the other instance the animation plays on both clips.2. Repeatedly clicking on the same instance results in the animation eventually only playing partially, as if the animation got terminated early. This is the case even when I wait until the animation finishes before clicking again.I suspect that this behaviour is caused by AnimationFactory.addTarget getting called repeatedly.
Code:
package { import flash.display.MovieClip; import fl.motion.AnimatorFactory; import fl.motion.MotionBase; import flash.filters.*; import flash.geom.Point; import flash.events.MouseEvent; public class Square extends MovieClip { public function Square():void { addEventListener(MouseEvent.CLICK, playAnimation); } public function playAnimation(e:MouseEvent):void {