ActionScript 3.0 :: Using MouseEvent And KeyboardEvent On The Same Function?
Dec 22, 2009
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 {
Ok, so I am creating a slideshow presentation in Flash CS5. The code is very basic, however it does not work as intended. It's supposed to go to the next frame if i press a button, or press up/right arrow on the keyboard. However, the keyboard only works after I've pressed a button once.
slides is a movieclip, where I've stored all my slides (Oh, by the way, I know my setup isn't the best, but I wouldn't use a lot of time on it, as it's for a religion class). FB is forward button, and you can guess what BB is..
I put together a rather simple interactive .swf file using graphical "buttons" to navigate through different screens. Afterwards, I was told to add in two keyboard events as well: one to navigate to the next screen and one to restart the .swf file.
Using the keyboard to navigate the way I explained above works fine--that is, until I use the mouse to click on a button. Once I do that, the keyboard events no longer work. For example, if I start off the .swf file by pressing the Space bar on the keyboard to navigate to another page, it works fine. If I then press the "R" key on the keyboard to restart the .swf file, that works fine as well.
However, the first time I click on one of the buttons on the stage to navigate to another screen, the keyboard events no longer work. I can press the Space bar, and nothing. I can press the "R" key to restart the .swf file, and nothing. It's as if using a mouse event disabled the keyboard events or made the .swf file stop "listening" for keyboard events. The only way I can get the keyboard events to work again is by clicking somewhere on the stage and THEN pressing the appropriate keyboard key. I'm guessing that's because I put the focus back on the stage, maybe?? (again, not an expert here)
My code is ridiculously simple, and it's on the first frame:
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); function onKey(event:KeyboardEvent):void {
[Code]....
Is there anything I need to do to this to make sure the .swf file is always "listening" and registering the keyboard events?
I'm having a tough time getting the escape key to use a function. Every tutorial I go to it says that you need to import.flash.events.KeyboardEvent but when I use KeyBoardEvent in a function nothing happens. I get an error that says it couldn't load
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'm trying to wrapup a slideshow for a client and the client asked for keyboardEvents in addition to buttonEvents. So I went ahead and added a stage.addEventListener and it works but only if you click on the stage first. In Flash CS4 itself when you test a movie, the problem doesn't happen but when you test it in a browser, the problem exists. Go to [URL] and see what I mean. Try the keyboard left and right arrows first. Then click on the stage and try again. How can I make it get focus on the stage on startup?
I have some functions that have mouseEvents for their param and I am wondering how those can be use without the param. Meaning those functions where set up to work with buttons, but how can call those when I don't have a button to call them? Here is an example of one of the functions:
function forward(e:MouseEvent):void { ns.togglePause();
Is there any way to call MouseEvent function in as3 from JavaScript?I have HTML button and swf object, I need to sent a POST request from swf by clicking on HTML button.
I'm sure this must have been covered 100's of times but I have searched and searched with no joy so... I'm trying to simply pass a value into a function using a MouseEvent, CLICK (the example below is just that an example not what I'm actually trying to do)[code]...
I am trying to make a simple mp3 player using flash. The songs are loaded using an XML file which contains the song list. I have "play" button with the instance name "PlayBtn". I have an actionscript file named "playctrl", the content of which are listed below:
package classes { import flash.media.Sound;
[Code].....
However on clicking the play button, I notice that the function playSong() is called 7-8 times(check by printing an error msg. inside the function) resulting in overlapped audio output and the player crashing as a result. The function should be called only once when the MouseEvent.CLICK is triggered.
I've dynamically created a grid of buttons which are going to modify a 2D array, but I can't work out how to create a unique function for each iteration of the loop with a dynamic function name. Probably just a stupid syntax error by me...
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:
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've done some coding in AS2 and have been trying to make the transition into AS3, but I'm having trouble with a simple piece of code. I've appropriated and slightly altered the majority of this code from an Actionscript 3.0 tutorial that I'm following, but it doesn't work correctly. The main timeline has the following code. The idea is to create a series of movieclips that can be individually clicked to change their current frame.
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 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've got an image gallery, that when the the image is clicked, it opens 2 images side by side like a magazine. Once the 2 images are loaded and visible, it makes visible 2 movieclips on each side to let you go to either the previous/next 2 images. Here's my code, I made bold the code that specifically relates to my problem. What I'm trying to do is when the button is clicked it either increases or decreases the imgCount by 2, and reloads the new images, but since the function I'm trying to initiate is triggered by a mouse event I don't know how to trigger it when the other function is triggered.
var imgCount:int = 1; var imgLoader:Loader; var lLoader:Loader;
I hv make 4 movieclips and i wanna add mouse event but it is showing error on MouseEvent function, and the error is. 1046: Type was not found or was not a compile-time constant: MouseEvent.
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...
in actionscript 2.0, one could call a mouseEvent function without actually having that event. For instance:
[Code]...
In this example, of course, rollOutHandler only does one thing, but this function could contain lots and lots of code, and I would not want to repeat all of it again inside the clickHandler function.
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.