ActionScript 3.0 :: MouseEvent.CLICK Not Working But Using MOUSE_OVER Makes Function Work?
Aug 27, 2009
The main AS timeline creates the enemy instance and calls them via the timer class. Inside the instance enemy movie clip there is some script to do a basic tween and there are functions to remove the enemy and to declare you've hit the enemy. The problem I'm having is when I try to call my KillEnemy function with a MouseEvent.CLICK (or MOUSE_DOWN, MOUSE_UP) event, it isn't registering, I realised this after testing the same function to listen for a MOUSE_OVER, MOUSE_OUT, it worked perfectly.
Can anyone explain why this is happening? Not just that the mouse seems to be a little delicate, even with the roll over listener called it isn't registering the event unless it hits a specific part of the movie clip enemy, which leads me to believe the movieclip is somehow built incorrectly? But even when testing the game with extreme settings (i.e. leaving the enemies on screen for a long time) the mouse clicks aren't registering still. Something is broken! Here is some of code inside the enemy movie clip, the problem lies on line 11:
After parsing some XML to create a vertical project list I'd like to be able to click on the image/icon representing each project and be taken to the URL that's been parsed in as well. Here's the error I get when clicking the dynamically generated Movieclips:TypeError: Error #1009: Cannot access a property or method of a null object reference.at NMD_work_fla::MainTimeline/itemClick()Below is the extracted code pieces related to the onClick function:
So Every time when I click left mouse button, the setClickedTrue function should be triggered. And that's what happen normally. But when I make a fast move with a mouse, and in the meantime i click left mouse button, or i make a fast move and finishing i will click left mouse button, the function is not triggering. Something like MouseEvent can't hear this Event. I'm making an avoid game, and it's very important. I'm using Timer class with delay = 30; I'm also have got 30FPS on Flash Proporties.
I want to run it when the user mouses over a hidden button.
Code: var container:MovieClip = new MovieClip(); addChild(container); root.transform.perspectiveProjection.fieldOfView = 120;
[Code]....
You can see I have a MC called "btn" but the code only runs once when the btn MC is moused over. I'd like to call the addstar function continously while the btn is being moused over...
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?
I am trying to add a simple "getURL" type of functionality to a movieclip so that when it is clicked on, the user is taken to a url. i have tried 3 or 4 different ways to do this that all work when i test the movie clip in flash. However, when i embed the swf in a webpage, the click function does not work.I created a function:
Code: function gotoPage(event:MouseEvent):void { var targetURL:URLRequest = new URLRequest('http://www.metteradvertising.com/marketing-help.html'); navigateToURL(targetURL); }
and I'm calling it this way ("Bmeasure" is the movieclip name):
I am working with AS3 to build a very simple mp3 player on my site. So far the play and pause button work fine, but when I try to move the slider then click the pause button, it doesn't pause, and then clicking the play button again causes it to play a new file.I'm assuming that for some reason when I call the playMp3 function from my MouseEvent, it's within an object or something and not at the root, so it's like loading a new sound file, but I don't know how to fix that.URL...
I 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?
Code: addVolvo.addEventListener(MouseEvent.CLICK, addCar); function addCar(evt:MouseEvent) {
[code]...
... but I want to pass the a value when calling the function:
Code:
addVolvo.addEventListener(MouseEvent.CLICK, addCar(classVolvo)); function addCar(evt:MouseEvent, newClass:Class) { var car1:Car = new Car( 1, 1, classVolvo)
[code]...
This won't work. Because it then just passes the Class and not the MouseEvent. What should I write in the addCar(...) call function? Ie how to I manually pass an MouseEvent?
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:
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'm trying to create a preview of which tower is selected for my game. I've set all of the 'background' of the level up with a class called EmptyBlock, which has buttonmode set to false. I then added event listeners to each one (this.addEventListener( MouseEvent.MOUSE_OVER, onMouseOver ); ) for both MOUSE_OVER, and MOUSE_OUT. Inside my onMouseOver function, I'm manipulating the x/y position of a MovieClip, and setting it's visible status to true. Inside the onMouseOut function, I'm setting the x/y position of the MovieClip to -25, -25 (Offstage, just hiding it from view), and setting it's visible status to false.
However, when I run the code and hover over this class (EmptyBlock), the MovieClip I'm manipulating flickers. It continuously flickers and doesn't stop. I tried creating the MovieClip's class and removing it (Creating in OnMouseOver and removing it in OnMouseOut) but that too flickered. Traces say that it's running the MouseOut constantly while the MovieClip is over it but not when it's not. What am I doing wrong here? I'm probably making a stupid mistake but...
On a second, smaller note: Once this MovieClip's class is created, it obviously intercepts the clicks I want to go to my EmptyBlock class. Is there anyway to forward the click onto my EmptyBlock class? The MC is not a child of my EmptyBlock class (but it is added as a child after the EmptyBlock class).
I'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.
I'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.
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
I had a dynamically created list of MCs that each had rollover states as well as click actions. Everything was working fine...
...Since the list was longer than the bounding areas that I wanted it constrained to, I added a mask to the container MC that was holding the dynamically created list (using AS3 - not through right-clicking the Layers). Now the list is still being generated, but the CLICK and MOUSE_OVER events are not working.
The thing is, if I scroll the list, and click on an item, it does not trace 'arthur' ! Why is this so ? I must trace that all the time that someone clicks in the list!
EDIT: If I remove change="model.selectSet( productSetList )" in the list, it works!! but I cannot remove that, some suggestions ? How can I switch that to another function?
I'm working in pure as3 (no creative suite or xml). I have a sprite. It draws a large rectangle and then a slightly smaller rectangle. I want to change the color of the slightly smaller rectangle when I hover the mouse over it. Right now though it will either not respond (I can plainly have the mouse over the rectangle and nothing happens) or it is slow to respond. In addition the collision area of the rectangle seems a bit off, ie it responds more frequently when I have the mouse on the upper left corner of the rectangle than when I have the mouse elsewhere on it.
Is there any way of making the MOUSE_OVER of an object not work until touching the actual object instead of the square box that's around it? I have a bunch of stuff packed together and there are certain objects that cannot be detected due to others pretty much enclosing it with it's surrounding box. If you need further explanation because this is not clear enough just ask me and I will try to explain further.
Is there any way of making the MOUSE_OVER of an object not work until touching the actual object instead of the square box that's around it? I have a bunch of stuff packed together and there are certain objects that cannot be detected due to others pretty much enclosing it with it's surrounding box. If you need further explanation because this is not clear enough just ask me and I will try to explain further.
I use eventListeners to jump between frames.One of my frames displays a video. I imported the video as a component using the 'import video' function.It plays fine.When navigating away from the video I use the myVideo.stop(); command in AS3 to stop the video from continuing to play.or some reason, when I do this the buttons on my main page stop working.The code I use on the movie frame is:
cr_back_btn.addEventListener(MouseEvent.CLICK, onCRBackClick); function onCRBackClick(e:MouseEvent):void {
I have a pretty simple function here where I want to start dragging a video scrubber along the x axis within bounds, and drop it when they let go. The code works perfectly if I don't specify a bounding rectangle (except it doesn't restrict to x-axis). What's up with that? Here's my non-working code:
Code: videoConsole.scrubber.addEventListener(MouseEvent.MOUSE_DOWN, dragScrubber); videoConsole.scrubber.addEventListener(MouseEvent.MOUSE_UP, releaseScrubber); private function dragScrubber(e:MouseEvent):void{
I happen to have this real massive code for an object in my game.(please guys dont move this to the game section the problem has hardly anything to do with that) One of them is a propane tank, the other a box and the third is a barrel.(it doesnt really make much diff i just want you guys to get a better picture of whats going on)So inside of each movieclip i put in this MASSIVE code.
ActionScript Code: onClipEvent(load) { var right:Boolean = true; }
[code]....
it works fine but when i put in an instance name the whole thing messes up.only one of them works and all the others follow commands from the same one. so lets say if presse is true for the working on, presse will be true for all the rest. The problem still happens if i use different combinations of objects like 3 crates or 1 propane tank and 2 crates. Can someone please help me find a solution without changing the instance name. By the way '_root.hater' is the character.
Is there any reason why a MouseEvent.CLICK would affect only 1 of 5 items, whereas a MouseEvent.ROLL_OVER and MouseEvent.ROLL_OUT affect 5 of 5 items when each event listener is applied exactly the same way?For some reason, of the 5 images I've imported, only the last image is able to be clicked and have click actions applied, yet it is able to receive the ROLL_OVER and ROLL_OUT messages. So that leaves me thoroughly confused.
Here is the code I'm using, I'd greatly appreciate your help ---