ActionScript 3.0 :: Remove EventListeners From External Swf`s?
Aug 5, 2010
I have a menu with buttons on the stage that when clicked load external swf but the problem, although i can remove them from the stage, is that they are still playing which gives my site performance problems. I gave weak references to the Event Listeners but i didn�t remove them.Here�s the code:
Let's say I have a global SoundChannel object, and inside a function I am repeatedly creating new instances of the Sound object to play songs one after the other. Each time I do this, I need to add a new eventListener to the SoundChannel to call the function 'onSoundComplete' that will load the next song on completion.Coming from a strict C++ programming background, I often wonder if it's necessary to do some kind of cleanup in Flash, or if it handles it automagically.Here's example code that specifically removes the eventListener from the previous Sound object everytime a new one is created, but I don't want to be doing this if it isn't necessary:
Code: // Setup sound object buffer var slc:SoundLoaderContext = new SoundLoaderContext(3000);
I have images loading from an array. A slideshow. This works fine, but they pile on top of each other. I cannot figure out how to remove them. what's the simplest way to remove them? How do I say - if pic1 is loaded, before loading pic2, remove pic1?
Code:
var aPics:Array=new Array("pic1.jpg","pic2.jpg","pic3.jpg","pic4.jpg","pic5.jpg"); var threeSeconds:Timer=new Timer(3000,aPics.length); threeSeconds.start();
I have a problem. I have a MovieClip that has a script. The MovieClip has an object inside of it. The script is for when I press the left and right arrow keys, the objects inside the MovieClip change. This MovieClip is placed on the stage.
I have a button on the stage, when its pressed, the MovieClip mentioned above is removed.
Once its remove, I press the left and right arrow keys and I revive errors in the output saying; the eventlisteners are still there but the objects gone, error.
I am wondering how I can either remove the event listeners in a MovieClip from the stage and/or how to acess variables and EventListners in a MovieClip from the stage.
I'm trying to remove an EventListener after I click on a button. The thing is that I have the AS calling a movieclip, which is calling a box to appear on the stage. The code that I have works, but if you keep clicking on that same button more than once more boxes keep appearing one on top of the other one, so what i need is to remove the listener when you click on the button ones, but if i click on a different button to activate the listener again so that i can click on that same button again and make the box appear. so here's what i got so far:
function Main() { // Adding mouse event to our stage! b1.addEventListener(MouseEvent.CLICK, AddBox); }
I'm fairly new to AS3. What I'm trying to is create a multiframe SWF (main.swf) that loads several external SWFs (ext.swf) on each frame. I've got that to work. My problem is that I'm trying to assign actions to buttons/MovieClips in the external swfs that navigate to different frames in my main.swf. I want to avoid hard coding the buttons because there are about 30 external SWFs and they don't all have the same number of buttons within them. The approach I took was creating two arrays in each ext.swf, one to hold the button instances and the other to hold the frame destination labels.
Code: var buttons:Array = [link1, link2, link3, link4, link9, link10, link20, link21]; var links:Array = ["c1", "c2", "c3", "c4", "c1", "d1", "d2", "e1"]; Then in the main.swf, I created a function that loads the ext.swf and runs a "for" loop that assigns EventListeners to the contents of the "buttons" array to go to the frame labels defined in the "links" array. [Code] ....... The "for" loop in the "assignLink" processes and traces the "links" array just fine, but it always assigns the last array item to every button.
picture: [URL].. I am making a boardgame in flash Action Script 3 each position on the board is a buttons like this: button_1_1, button_1_2 etc. Whenever a character is selected you want to move it so the script has to add event listeners for positions around the selected unit
[Code]...
In the rest of the code I have:
function userClickedPosition(position_x:int, position_y:int) it selects or deselect a unit function selectUnit(position_x:int, position_y:int):it uses the listentoButton(1) function to add 8 listeners (the positions around the clicked unit)function deselectUnit(position_x:int, position_y:int): it uses the listentoButton(0) function to delete 8 listeners (the positions around the clicked unit)
My question: adding eventlisteners is no problem but removing them dont seem to work? What did I do wrong?
I've read similar problems in other posts but I can't seem to find the right solution. I'm trying to convert an AS2 project to AS3. The old project has a series of buttons which load an external swf into an empty movieclip on the stage. Pretty simple using loadMovie/unloadMovie. I'm able to load the external file using the loader object[code]...
My problem occurs when I try to load another movie. I use the same function and just pass the external movie name. I can remove the external movie from my placeholder movieclip so it is not visible on the stage but it still plays. I can hear the audio as the new movie is playing and get output errors because the first movie is firing off code that can't complete.
Im once again stuck on actionscript 3.0. I am currently trying to load an external swf into my current swf by using a button. This works perfectly.I then made a button to unload my swf. This works too.
Actionscript Code: var myrequest:URLRequest=new URLRequest("Extswf.swf");var myloader:Loader=new Loader();myloader.load(myrequest);open_mc.addEventListener(MouseEvent.CLICK, clickButton);close_mc.addEventListener(MouseEvent.CLICK, unloadFunction);function clickButton(event:MouseEvent):void{ stage.addChild(myloader); function unloadFunction(event:Event):void{ stage.removeChild(myloader);}
Looking at this gave me a new idea, which I have seen being done in Actionscript 2.0.Instead of having a close button inside my current swf file, I would like to have the close button INSIDE "Extswf.swf". This would allow me to make the swf exactly what my original idea wanted it to be.
I loaded an external SWF file to my timeline using MovieClipLoader method. myMCL1.loadClip("game.swf", 5); It loaded fine. But then with a click of a button I need to go to the next frame and I want this MC to go away. I've tried everything I knew:
I have managed to load external swf's fine and also unload them when a new one is loaded, but now I need the swf's that are loaded to appear below (meaning on a lower layer effectively) than my navigation, which is in the main swf. I can get that to happen by creating a movieClip on the stage on a layer beneath the one my navigation is on and loading the swf into that mc, but then I don't know how to clear the swf from that mc so another one can load there in it's place.
Here is the code I have so far:
Code: //Universal Button Function function buttonClick(event:MouseEvent):void {
I've used the following frame action with 2.0. for loading external swf to blank mc on stage, scale it and then removing it by buttons. load_btn. onRelease = function() {movie_mc.loadMovie("webdesign.swf");movie_mc._xscale = 70;movie_mc._yscale = 70;}remove_btn.onRelease = function() {movie_mc.unloadMovie();}I found that it is not working anymore with 3.0.
I have 4 empty movieclips called holderMC1/2/3/4 on 4 frames of the main timeline. Each movieclip loads in an external swf with this code: var swfLoader4:Loader = new Loader(); holderMC4.addChild(swfLoader4); var bgURL4:URLRequest = new URLRequest("F1_h.swf"); swfLoader4.contentLoaderInfo.addEventListener(Event.COMPLETE, loadProdComplete4); swfLoader4.load(bgURL4); function loadProdComplete4(e:Event):void { trace("file loaded4"); } I have 4 buttons which on click goes to 4 frame labels on the main timeline corresponding with the 4 movieclips. Very simple - works fine - except the swfs don't unload properly, so the video in the external swfs keeps playing in the background when a new swf has been loaded.
I have read many many post and I don't find the answer of how to remove completely a swf load external.Every time I load and unload I see the windows memory task manager and see that the memory increase and don't reduce when remove child.
this is my code: var oneLoader=new Loader(); bt1.addEventListener(MouseEvent.CLICK, swf1);
I'm creating a website for a cabin and I want the users to be able to view a calendar that exists on the reservations website. The calendar is constantly updating as people are reserving cabins. I want this calendar to dynamically load from the external server onto my website for people to view. Then once they view it - I want to remove it on the next mouse click. Right now it stays and ends up on every page in the website. I think it should be easy and I have some sort of misunderstanding of how to do it. I have literally spent days trying to get this stupid thing to work. It's driving me crazy!!! Here's what I have right now.
I have developed a touchscreen application that works perfectly fine except for the memory issue. Basically, the touchscreen app works kinda like a website with navgation on the side and content displaying next to it. I separeate each section into external swfs, and load each one up when it is needed, thinking it would reduce memory used on the pc. But unlike actionscript 2, AS 3 would not remove the external swfs from the memory. You can remove it from the stage and you won't see it, but the swf will still stay in the memory! So... as you navigate through the app, loading up all these external swf, even I do loader.unloadAndStop();, the swf is still there, and they just keep piling up in the memory as you navigate from the app. After leaving the touchscreen for a day or 2, having all these users naviage through it, all the external swfs will just completely consume all the resources and freeze the pc.
I have a main movie timeline that loads an external swf. When I unload the swf from the main timeline I get an error from this:my_FLVPlybk.addEventListener(VideoEvent.COMPLETE, vidEnd);
is there any way to remove the event listener from the loaded swf from the main timeline?
i have a Flash Application with a button and an onRelease event. How can i load an external swf File, display it for 5 seconds on top of the main stage and then fade it out? Will this be possible with createEmptyMovieClip()?
I have a series of 10 external interface callbacks that are called through javascript and load mp3 files. The problem is, someone is able to click these while my pre-load function is running and it causes multiple files to load. Is there a way to disable the callbacks while the pre-load function is running?
ExternalInterface.addCallback("receiveText1", receiveText1); function receiveText1(value:String):void { channel.stop(); channel2.stop();
One being ... at the moment when a FLVPlayback is imported onto the stage and a user clicks on the exit button before the video it has fully loaded onto the stage, the video keeps loading in the background. I want it to be completely removed and stop loading when the exit button is click... because at the moment it slows the users internet down and the sound also plays in the background when its been fully loaded... The video interface seem to be removed but not the whole thing.
It is also happening to me when I use addChild to load a external JPEG... if the user exits before it is fully loaded to the stage... it keeps loading in the background.[code]...
I'm trying to have an external loaded swf unload when other buttons on the main swf are clicked. i finally managed to get an external swf to load with a button using AS3, now I just can't figure out how to get it to go away when the other buttons on the main swf are clicked. Here is my code so far:
Code: Select allquote4.addEventListener(MouseEvent.MOUSE_DOWN, goquote4); function goquote4 (e:MouseEvent) { var loadit = new Loader();
I have developed a touchscreen application that works perfectly fine except for the memory issue. Basically, the touchscreen app works kinda like a website with navgation on the side and content displaying next to it. I separeate each section into external swfs, and load each one up when it is needed, thinking it would reduce memory used on the pc. But unlike actionscript 2, AS 3 would not remove the external swfs from the memory. You can remove it from the stage and you won't see it, but the swf will still stay in the memory! So... as you navigate through the app, loading up all these external swf, even I do loader.unloadAndStop();, the swf is still there, and they just keep piling up in the memory as you navigate through the app. After leaving the touchscreen for a day or 2, having all these users naviage through it, all the external swfs will just completely consume all the resources and freeze the pc.Also, is it better to develop touchscreen application with actionscript 2 since it doesn't have this pressing memory issue?
Yes I know this topic has been discussed before, and I know that Senocular has a class that does it. But the question is...
1) Why did Adobe remove duplicateMovieClip();?
2) Did they intend to have any similar function? Or did they totally forget about external assets?
3) Is there a "Adobe reccomended" code that will do the same thing? (Not that I've got anything against Senocular :bow : but it'll be nice to know if there's a "certified" way of doing it.
Trying to add EventListeners to Bitmaps.Can I add an EventListener directly to a bitmap?If I load an image to a UILoader then addEventListener to the UILoader instance that works just fine, but if I use a Bitmap instead, nada...I could load the Bitmap into a Sprite and add the EventListener to that, but would prefer the direct method...