Actionscript 3.0 :: Get Definition Calls Child Swf's Constructor Twice
Mar 28, 2009
I'm making a Flash game and have a Parent MovieClip into which Child swfs (levels) are loaded. The Parent has an inventory system that will store the objects found in the Children. Of course, to do that, I need access to the each Child's base class and all its assets, so I use GetDefinition. Everything was fine before I bumped into a weird problem: it calls the Child's constructor twice. Before I go further, here's the code stripped down to its simplest form.
I dont know if that is normal, but this code create an infinite loop, because when i create a new instance of class Two, because of the extends, the class One constructor is called again, and creating a new instance of class Two, and so on...I know how can i get this fixed, but, what i want to know is, this is correct? Its a Flash bug? Isnt that way in AS3?
I do not want to use external .as files because I will have about 100 swfs to manage in this project, 100 swf is a lot of file management alone without adding 100 .as files on top of it.This is the code in the parent swf file to call the child swf and place it in the page_mc movieclip (note in my final project "child.swf" is replaced with the loading array variable but we're going to keep it simple):
ActionScript Code: var pageLoader:Loader = new Loader(); page_mc.addChild(pageLoader); var loadedpage:URLRequest=new URLRequest("child.swf"); pageLoader.load(loadedpage);
Now just for a simple function to call, we'll say we have a box_mc on the stage in the child swf, and when we click the button in the parent swf I want to call a simple function like this to hide it:
ActionScript Code: function hideBox(event:Event):void { box_mc.visible=false; }
how do I call that function in the child swf from a button in the parent swf?
I have a timeline instanced movieclip which i'm calling a method on its parents movieclip constructorproblem is that even though the object already exists, its methods are "undefined", i have put some traces in, and noticed the child constructor is calling after its parent constructor..
I'm sure that I'm doing something daft here - I just need to remove a child that's created in the constructor through an event listener.My code is below but does not work. Can someone point me in the right direction please?
public class Main extends Sprite public function Main() super(); var rectangleIndex:uint = this.getChildIndex(playerBackground)
here is the scenario we ran across while working on our Flash AS3 project today.
/main/root.fla /main/root.as /main/sub1/sub.fla
[code]....
We have many sub swf's that are loaded by the main root swf. The root swf shows the art on the stage of the sub swf, and also runs some code from the sub swf's document class. However, we noticed the constructor was not getting called on the second sub swf if the document class is the same name- even if they are in different folders. Note that we publish our swf files to a separate directory (with the same structure as above) so it is easily copied to the web server.
-root.swf loads sub1/sub.swf -the constructor of the document class sub.as in subfolder sub1 gets called -root.swf shows sub1/sub.swf assets with the correctly constructed sub1/sub.as document class -user chooses to switch to sub2
[code]...
We decided to use a workaround where we basically changed the two document class .as files to be different names (e.g. renamed sub1/sub.as -> sub1/sub1.as and sub2/sub.as -> sub2/sub2.as, and updated the .fla's to point to the renamed document classes), and it works as expected. Hopefully that workaround is useful for someone.I realize most people just name every single file differently and keep everything in one folder, but when you have a sufficiently complicated project, things like this come up.
I have a picture on the stage that has multiple items that have hotspots/links over them that should open a child swf on top of the background and show details about the items. then have a button in the child swf itself that removes the child from over the background so the user can click on another item etc.I found this code in someone's post and I am trying to modify it so that works for multiple swf files...it currently works for a single swf.I wan to pass the name of the button in front of the .swf in the URLRequest to have the same name as the instance name of the referring button. But I can't figure it out. Here is the code I am using on the stage
i have problem with swfLoader in flex, when i close following code in click method i can easly add many swf to main application
<mx:VBox id="content" width="100%" height="100%" ></mx:VBox> public function doIT():void {[code]....
when i close adding those swfs in loop i have the same error, it looks like child apps couldn't access certain objects that were instantiated by another child app, so what can i do?
I have a movieClip with one frame on the timeline containing one child whose instance name is "myContent"I am using this function to swap "myContent" with any number of possible class instances.
I've used this site as a resource leading up to this, not particularly sure if I worded this correctly I have a class "Block" which is just a square (will be something else later on in the process) I want each block to have controls to add an additional block in either direction so I have another class BlockButtons which has my buttons for each direction.
And another class GlobalVar where I keep all my variables for funsies
I have a component mxml file in which i have a view stack, on click of a button i navigate to the first child, now i need to navigate to the second child during onclick of a button present in the second child. All the childs are component files included within the view stack. How could this be done, Sample code is present below,
[code]...
Now in my offering.mxml file if i try to access navigationViewStack i am getting an error stating 'Access of undefined property navigationViewStack.
I've seen some discussion on how to load a child swf using swfLoader and accessing it's variables but I am wondering if it is possible to do this without adding any code to the child swf.Either accessing public vars or listening for funciton calls would work fine
i'm new to AS3 and i was wondering what is the best way to remove a child at a point. i tried Holder.removeChild(Holder.getObjectsUnderPoint(new Point(exampleX, exampleY))[0]); however that returned ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
I have an Movie Clip in Flash that have subobject of button type which has subobject of input text and movie clips. Right after creation core Moveclip all subobject are set to null, when I expect them to be valid objects.
[Code]...
MC_Core_design was created in Flash and exported to Actionscript. I've done this for button_1 class aswell. The code was written using Flex. When I comment out both lines that result in error I get correct view of the core Movie clip with all subobject. How can I set subobject properties right after object creation?
I have a Flash movie that uses Actionscript 2.0 to trigger animations. The swf and flv files are separate though - the flv is called by the swf. There are cues in the flv that fire Actionscript events. How can I get the whole thing to export? I can convert the flv to an avi but I need the animations.
I'm debugging some code and see a loop where an event is dispatched and a remote call is made for every record.Everything was working fine until there were several hundred records (700) to be a exact. Is that going to make the flash player chug? Should I move to a queued system? How many records is too many? [code]
im using a function that iterates through all nodes in an XML tree, and then calls itself again if any of the nodes it is looking at has a set of child nodes, so in other words it multi-dimensionally loops through the entire XML tree.[code]one question i have is - am i correct in my assumption that while variables declared within a function are not accessible anywhere but within that function, if a function calls itself, any loops within that function that use a variable such as "i" will be affected seeing as "i" is accessible within the function?if so, how do i get around that? currently my function loops through all the way down to last child node it can find along the first branch of the XML tree, but then doesnt continue looping through the other branches.
a quick low down would be its a gallery on the second frame and I breaks when coming back tot he first frame, all tweens die and such.
the errors are:
TypeError: Error #2007: Parameter child must be non-null. at flash.display:isplayObjectContainer/removeChild() at index_779_fla::MainTimeline/imageLoaded()
I have an issue where removechild won't infact remove a child. I think its something to do with my dropTarget.parent issues. The concept of the code is that you drag a source onto a destination. When you drop the source onto the destination you will get a text field that says "Hello" or "Goodbye". The objective i want to achive is that once i drop a source onto the destination, removechild will remove any previouse textfields added. This is proving difficult.
I have created 2 sprites each containing a dynamic text field child. I then add this as a child of the stage. (I have done this in order to make the text clickable with a hand cursor on mouseover)It loads in fine, I just run into problems when trying to REMOVE it the sprite containing the text."ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller."Sections concerned in red:
why this isn't working. im dynamically loading a list of mp3's and when i click on them i want to play the mp3 that i clicked on (this is the thisRow.onRelease function), but it says that the "this.filename" property is undefined, but it is defined when i trace it.
Code:
function populateSongs() { for(var i:Number = 0; i < songArr.length; i++) { //trace(i);[code].........
I made an animation and I split it up into 3 swfs. Now I want to put them together so it plays one and then Calls the other and plays it when the first one is done and so forth.
Using Tweener, is it possible to run code in between two calls to it (Tweener)?I'm a little bit familiar with Tweener and am trying to use set ChildIndex() after one call to Tweener executes and prior to running a second Tweener.[code]I'm trying to get the sprites to switch levels in the depth chart (so to speak) so that one sprite will appear on top on the first pass but then appear behind another sprite on the second pass, but it seems like the lines of code execute while the Tweener is running, and the desired effect is not happening.
I have created a movie that calls up an MP3 (background music) with this script:
fscommand("fullscreen", true); var mySound:Sound= new Sound(); mySound.loadSound("MyMusic.Mp3" , true); mySound.onLoad = function() { mySound.start(); }
The thing plays great with Player 8, however, when I play back the same .swf from Player 10, the sound plays much too fast (speeded up...how can that be????), and the quality is horrible (lots of slurps and pops and blips and beeps in there).
I have a loader class that has a container and loads in swfs using Loader class. Within the loaded swf on the last frame of some nested clip, I have a call to a static function within some "Connector.as" class. Now what happens is when I try to unload the swf ( by removing all listeners, calling loader.stopAndUnload(), and setting all references of loader to null) before the nested clip calls the static funciton, the swf gets unloaded and garbage collected (all enterframe events etc. are removed because they no longer run) however even though there is no reference to the swf the nested clip still plays in the background and dispatches the call to the static function when the frame is reached
I am using Flex and with the AS3 libraries.I can make calls etc but when i get values returned in the event,they are in RawResult. I am not sure how to turn that into an arraycollection etc so i can make use of it in flex, or if there is a better way of accessing the data, generally speaking.
var friendsDoc : XMLDocument = new XMLDocument(e.data.rawResult); var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);[code]....