ActionScript 3.0 :: Communicating Between Parent And Child Classes?
Dec 23, 2009
Basically, I have a menu system for a website that is built on a three tier hierarchy. onclick event handlers load movieclips which contain the next submenu in my menu system. Each menu and sub menu is a series of movieclips with roll over, roll out and click eventlisteners applied to them to give them button characteristics.
However, I have hit an unforseen problem. I need to be able to control all the onclick event handlers assigned to all my buttons from one place, not in lots of different movieClips. I want to be able to add and remove different website content pages in one display object or else I fear that pages will start to appear to overlap as they are added within their specific sub menu movieclips.
I guess what I am trying to say is, can I control movieClip instances that are contained within a child object from my main timeline?
So i have a situation where i want to pass a object of a class say 'MyBigAwesomeClass' from a child to a parent. I import the class definition into both the parent and child. Now, if i load the child swf from a location that is relative to the location of the parent , all is fine, however the moment i load it using a full absolute path, it treats the definitions for 'BigAwesomeClass' in parent and in child as different and does not allow an object of the type 'BigAwesomeClass' to be assigned to an object of the same in the parent class.I am totally stumped, and have banged my head over ApplicationDomains, including using this code
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,swfLoaded); var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain); loader.load(new URLRequest(_file.url),context);
I got a Parent Sprite, let's name it SpriteP, which holds inside it two other Sprites. Sprite1 and Sprite2.[code]Sprite2 is a rectangle. When I rotate it, of course, the height of its parent, SpriteP, GROWS. But I would expect that height to go back to what it should be when I'm removing Sprite2!And it does! If I remove Sprite2 while NOT being rotated, the height of the parent drops back to normal, 200.
i am slightly confused about the parent and child relationship. lets assume we have several different instances, what would be difference of adding them all as children of the stage and creating a parent-child hierarchy between them(other than the access path).
I got a Parent Sprite, let's name it SpriteP, which holds inside it two other Sprites. Sprite1 and Sprite2.
When Sprite2 is NOT rotated:
Code: trace(SpriteP.width + ' ' + SpriteP.height); //100 250. SpriteP.removeChild(Sprite2) trace(SpriteP.width + ' ' + SpriteP.height); //100 200. -> works, 200 is good. When Sprite2 is rotated at 90:
[Code].....
And it does! If I remove Sprite2 while NOT being rotated, the height of the parent drops back to normal, 200. But if I rotate Sprite2, the Parent won't update its bounds.
I'm trying to call a function from a class that I've instantiated on the main timeline from another class that I've also instantiated on the timeline.The function I'm trying to call adds a line to a string that acts as a game terminal so that even if the game glitches for someone without the source code, it would be possible to read the variable changes and functions called. (it also doubles up as an input for unlocking characters and levels that are otherwise hidden)Main Timeline:
Code: import britland.Character; import game.terminal; var GameTerm=new Terminal();[code]....
I've tried both "flash.display.DisplayObject.stage" and "this.parent.parent" here after discovered that "_root" has been removed and "root" doesn't work in the same way.
[code]All clips are squared.Ok, on the PlayerPlane, there are little soldiers, which have hotkeys. The effect I'm trying to create is I want to position the GameStage so that the currently selected soldier appears in the center of the GameClicker clip.The GameStage is movable by the player (to scan other areas of the map)by holding the CTRL key, so it's easy to kinda lose track of where your players are.I have tried using localTo Global and globalToLocal techniques, but I think I'm lost on the actual math of getting the GameStage to move the correct distance so that the selected soldier is centered to the GameClicker.[code]
I have been struggling with what seems to be simple concept in ActionScript 3.0 - how to communicate between classes. I have a very simple experiment with two movieclips on the stage. They are named YellowBox and RedBox in my library. I have linked the following code to the YellowBox movieclip:
package{ import flash.display.MovieClip; import flash.events.MouseEvent; public class YellowBox extends MovieClip { public function YellowBox() { this.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler); } public function rollOverHandler(event:MouseEvent):void { this.x = x + 3; } }}
What I would like to do is call the YellowBox() function on my RedBox MovieClip with the following code:
package{ import flash.display.MovieClip; import flash.events.MouseEvent; public class RedBox extends MovieClip { public function RedBox() { YellowBox(); } }}
I get the following message when I compile: 1136: Incorrect number of arguments. Expected 1.
I have a custom keyboard class. The second class is having a textBox as its child and my custom keyboard's object as child. When the key in the custom keyboard is clicked, how can i update the value in the text box?
I'm just starting to build my first proper OOP piece.I have on stage two manually placed MCs.One is viewer_mc:ViewerClass and one is menu_mc:MenuClass.They each have their own class and there is a document class...
PHP Code:
package { import flash.display.*;[code]....
So I can call the public method of either class from the other class.However, I am now trying to understand custom events and dispatching them with parameters.which uses a custom event class.This works fine when the dispatchevent and listener are both in the viewer class, but when the dispatchevent is in the viewer class, and the listener is in the menu class I can't get it to work.I suppose for my purposes I don't really need to use the custom event class, I can just call the respective classes' public functions but I just wanted to try and understand how it works.Here's the pared down version of menu class...
PHP Code: package classes { import flash.display.*; //some other imports[code].........
I am having problem making classes to communicate. I have main class which loads external swf that contains one image at this time. I want to change alpha for that image using button (created from library) from main swf. Don't know how, various methods I tried gave various error messages.
I have a main swf that loads another swf with a close_btn. I want to be able to click the close button and unload the child swf.
PHP Code:
contact_btn.addEventListener(MouseEvent.MOUSE_DOWN, contactClick); function contactClick(event:MouseEvent):void { var businessMC:MovieClip = new MovieClip();
[Code].....
As of now it just says a term is undefined which leads me to believe I am targetting the button incorrectly
I got a "preloader" that creates an movieclip and loads an SWF. Now in the loaded SWF i want a close button to go back to the "preloader". The preloader isn't an actuall preloader but some sort of mainclip.Now i tried this:removeChild(MovieClip(e.currentTarget).parent.pare nt.parent)But i get error:ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.at flash.display::DisplayObjectContainer/removeChild()at MethodInfo-6()
if I add a clip to the stage as a child and remove the parent and set the parent equal to null, does the child get collected and removed from memory? What if the child has an image loaded into it as its child?
In my application I'm loading a series of png images as overlays that can be tinted for customizing in this app. When I trace my memory, the basic app idles at 64,000 k. The exact second I load those overlay images it goes up to 205,000k. If I remove those clips and "clear" the stage I should go back down to 64,000 k if everything is removed and collected correctly, right? It's not, it's hanging at 215,000 k. Are my images being cached and that is the reason for the memory staying up? If so, how do I prevent that. Or upon removing the parent of the image how can I un-cache the image.
If a user switches between models and loads several different items then the application actually crashes the Flash environment because of too much memory usage. It also does the same to browsers.
I have a parent swf which loads many child swfs (though only one is displayed at a time). My intention was to use the loaded SWFs document class to retrieve an array of objects to be assigned a tab index, combine this with the parent's own array of objects and apply sequential tab indices to them all. But what happens is actually that the parent's objects are assigned an index, but the external swf is unaffected. In fact, the external swf retains its automatic tab indexing, when I would expect that having set a value for InteractiveObject.tabIndex, automatic tab indexing would be disabled.
I've seen similar tales elsewhere. Most posts I've read are wanting to load an external swf, give it focus and loop through those objects, then close the swf and return to looping through the parent. However I would like loop through all objects as one. including manipulating the focus manager(s), and basically fiddling with every tab-related property I know.
TypeError: Error #1009: Cannot access a property or method of a null object reference. at com.common::stageConfig() at cloudsMain() CloudsMain.as which is attached to the .fla
[code]....
Basically I'm trying to create a class that I can call and centralise any mc on stage by eg.stageConfig.centralisedDO(my_mc), However I encounter the above error.
trying to on mouse over set the parent of the moused over text field to the highest depth child of its parent i tried both of these: [code] private function
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 am trying to make a calculator where a user can select from a list of items. If a user clicks say "ITEM1", it should add the item to a "CONTAINER_MC". The problem i have is all my data is set inside an array containing names and prices like the code below.
Here is a working script to drag drop a ball from the stage into another target mc:
ball.addEventListener(MouseEvent.MOUSE_DOWN, pickUp); stage.addEventListener(MouseEvent.MOUSE_UP, dropIt); function pickUp(event:MouseEvent):void{ [code]...
It works well but I'm new to AS3 and I am having difficulty amending this script to drag the ball out of a parent mc (instead of the stage) and onto another mc (the target mc). To explain: imagine a ball, a box, a tri, + more shapes all within a scrolling mc (initial parent), the user scrolls to select a shape, then drag-drops onto a target mc on the stage.The scrolling is no problem, but how would you amend the script above so that the ball can start inside a parent mc rather than on the stage itself?
i have added an movieclip as a background and added another movieclip to it. Now i want it to be placed a bit outside the bg. movieClip.x = -50; movieClip.y= -40; But if i do this, then it just gets cutoff, is there a way to make overflow visible?
Some forums suggested to simple add the child to the new parent and it would automatically be removed from the old parent. However, these were Actionscript 2.0 forums and the suggestion didn't work - it removed the child but never added it back.MovieClip(root).bmc.addChildAt(currentLetter, 0);Is it possible to take a child from one parent and add it to another in AS3?
I have a MovieClip instance which can be moved around the stage using startDrag() and stopDrag(). The instance also has some child MovieClips using addChild(). The parent moves the children when dragging, which is fine. The children have there own startDrag() and stopDrag() which should apply only to the child object, however it also moves the parent and other children. When clicking a child the MouseEvent of the child is being called but so is the parent.
public class Component extends MovieClip { private var nodes_array:Array = new Array(); public function Component() { x = 60;
Im using the following code to place an object inside a container:
testParent = new MovieClip(); testParent.graphics..beginFill(0x0000FF); testParent.graphics.drawRect(50, 50, 300, 300);
[Code].....
this gives the testParent object a margin of 50 from top and left. The testChild object should have have the same margin relative to stage. But doesnt.. The child object is at 0,0 relative to stage. Whats causing this?...
how do I get a value from another mxml.I have a vaule in the child mxml that i would like to parse to the parent mxml.Then use the vaule to create a search method.