ActionScript 3.0 :: Limiting A Container To A Certain Number Of Children?
Feb 9, 2009
At one point in my script I'd like to check a MC for the number of children and limit this number to 3. For that I use this script:
Code:
if (container.numChildren > 3){
for (i = container.numChildren; i > 3; i--){
container.removeChild(container.getChildAt(i-1));
popError('Horizontal nur 3 Elemente!');
}
}
This somehow works fine if there are 4 or 5 children in the MovieClip, but as soon as there are 6 or more, it throws an Argument Error #2025 and does not remove anything. BTW it does not make difference if I use container.removeChildAt(i-1);
I'm currently working on a custom component which extends Canvas (let's call it SuperCanvas) ; it's basically a container that let you zoom & pan its contents. It would be too long to explain why, but I can't use scrollRect, so I was forced to declare a Canvas object (called innerCanvas)... inside my SuperCanvas (I know, not very nice =/) I would like to know if there's a proper way to "redirect" the creation of my component's children in this canvas.
Is there a way to restrict the number of characters in the Flex Rich Text Editor? I guess there should be, since it's possible in a textarea. So, if I could get hold of the textarea contained in the rich text editor, I would be able to do it
I have a textfield that acts as a log in that it routinely gets messages added to it. I want to limit the number of lines the textfield can display - that is, if the textfield exceeds a certain amount of lines, the oldest lines that were added are removed and the rest of the lines of text are shifted up. Basically I'm wondering if there is a cleaner way to do this, as my technique seems inefficient:
Code: const MAX_LOG_LINES:int = 50; // assuming parameter message is a string that ends in to add a line break. function addText(message:String):void
Well I'm starting to really enjoy AS3, my next question then is this: In AS2 I'd often remove all movieclips with something like this: PHP Code: for(var i: String in container) { container[i].removeMovieClip(); } Is there something similar in AS3 that I can do without resorting to maintaining an array of references to each child of my container?
I am having trouble determining where to add my removeChild() statement to clear multiple movieClips from a container mc. I know I need to determine if the container movieclip contains anything. I don't know how or what I should put and where to put it. If I can determine if my container mc has movies in it, I am assuming I can just declare it again (i.e
PHP Code: panel= new MovieClip(); )to clear it. Am I correct?
I'm using as container for my LinkButtons. I would like to know 1) How can I remove the space between the items in my Tile container. 2) How can I set dynamic width for my items (at the moment they all have the same width regardless the width of the included component) 3) How can I avoid to display scrollbars if the items are not included in the container
If I have a container, and I set clipContent to true, how do I get the total height of the children inside it? Is there a method for doing this without itinerating through every child and summing the heights?
I'm using an accordion container that has it's creation policy set to auto. One of the accordion's children is a spark border container that has a data grid within it. Currently, I'm using the data grid's creationComplete property to call a function; similarly, I'm using the dragComplete property to call another function.
How can I add listeners for events (creationComplete & dragComplete) via actionscript? The obvious problem is that the accordion does not create all its children on creation (nor do I want it to), so I can't simply use something like: datagrid.addEventListener(...)
I have a VBox inside a Canvas. The 'red bars' are custom components based on 'Canvas'. All red bars are of equal height. I have 20 red bars inside the VBox. The scrollbars visible in the screenshot are the Canvas's scrollbars. The scrollbars of the VBox are disabled using verticalScrollPolicy = off.
Without scrolling, only 16 red bars (and a part of the 17th bar) are visible. However, when I scroll down the Canvas I expect to see the remaining red bars - but the bars that are not visible when the application starts don't get 'drawn'. What am I doing wrong? I want the user to be able to see the 17th - 20th bars when the Canvas is scrolled down.
is it possible to retrieve all children of a certain type from a parent in actionscript 3? i only see getChildAt,getChildByName, is there a getchild of a certain type like get all childs of object type:Food?
How do I remove all children from a display object container? I want to make sure that when I re-enter a particular frame that there are no imageLoaders loaded into my photoGallery.
What's the best way to scale a container mc but not scale the children inside it? Basically I have a box mc with a background colour, with a logo added using addChild, if the user changes the browser size the box scales to the height of the window but it's also scaling the logo, I just want to change the height of the container box really.
I'm trying to avoid the scroll bar appearance on an UIComponent. Is there any way to obtain the computed width/height that my container component should have to have all children visible? I don't want to compute it myself. I would like to know if there is any variable computed by the component when it decides if it should draw the scroll bar or not.
Is there an easy way to make a parent container (eg Group) resize when it's children resize?
Below is a little example app. When I put the 200x200 'food' in the 'stomach' the stomach & it's containing 100x100 'body' should resize to contain the food.
If I've got a Container with a child component that is off either the top or the left hand side:
Is there any way to get scroll bars to show up? ie, so I can scroll up and get the button back in view, the same way I could if the button was off the bottom right side?
I have code like the following: <s:VGroup gap="10" id="group" height="100%"> <s:Label text="This is page 2" /> <s:Button content="Resize Canvas" click="resize(event);"/> <mx:Canvas id="photoCanvas" color="#567898" backgroundColor="#125567"> </mx:Canvas> </s:VGroup>
I don't understand why the following does not work: Pushing the Button resizes the photoCanvas's height (gets taller or smaller). Since the photoCanvas control is a child element of the VGroup shouldn't the container update itself to the new height? The Vgroup has ALWAYS the same height, no matter what the (total) height of the children is! I would like the VGroup to adjust itself and get a height value equal to the sum of its children heights. Is this not possible??
Flex's new States re-parents visual items that are marked with includeIn/excludeFrom. If I have a Group (MainGroup) with 5 children/elements that are state controlled, is there still a way to get a reference to MainGroup's children? mainGroup.numChildren and mainGroup.numElements don't work since the children are re-parented. At best, they show 1.
I have a container object that i add children to. I want to change the height & width of the container without the children scaling. In this case I draw a rectangle in flash which I'll use as the container object then export for AS.
...I would like to override whatever function that adds the children to the parent Group and add them to the child viewstack instead but I can't seem to find where the adding occurs. Breakpoints in addChild and addElement shows that they are not called during the add.
I want to constrain the number of children the ViewStack to avvoid the tabs going out of the screen when the user opens many tabs without closing any. I attempt to do this by removing the oldest element in the ViewStack when the user opens a new tab and the size of the ViewStack is above 9.
private function openTab(object:Object): void { //Create a new NavigatorContent(form) and add it to the ViewStack[code].........
The image below illustrates my problem, where the dark grey color illustrates the selected Tab. There should only be one selected tab, which works perfectly fine with both the child selection approaches above, when i don't remove a child before selecting a new. When i remove a child and then open a new Tab, the new Tab does not get selected properly, it only gets "painted" in the selected color. In This case Tab 40 is still shown when i open Tab 41 (exceeding 9 tabs). The result of this issue is that Tab 41 is not rendered completely.
UPDATE: The problem was my AS3 code inside the childrens NavigatorContent's that caused the application to behave this way. The solution was using the callLater method:Doric's
code example:
protected function openTab():void { var form:Container = new Container();[code]............
Given this XML code:[code]I can count the total number of game elements in the XML.game with:[code]Is there please some way to print the number of all game elements having the exact number of 3 user children? And also count all such elements with less than 3 user children?[code]The backgound is, that I have a Flex game, where up to 3 players can sit at a playing table and I'm trying to display the number of All, Vacant and Full playing tables there (the top left row with RadioButtons, sorry for the non-English language):I'm reading the XMLList doc, but don't see how to do it with one-liners, I only can see how to do it with loops...
I would like to do a simple check when I load an XML file for the most number of characters of children nodes. In other words, if any child node contains more than 50 characters I want to to configure stage objects differently.[code]
I've seen plenty of articles on AS3 for doing this, but is there _any_ way of doing this in AS2? I've need to loop through every child mc within several other mc's and change their colour... but cannot find any way of doing it (or anything confirming it can't be done!).
At the moment, I came across this problem where I have to work with many swf files.The problem is I'm using addChild() & loader to navigate between each swf. It doesn't seem to be a problem at first, but after numerous times of clicking back and forth, the flash player starts running slow.So I've came to a conclusion that eventhough new swf are added every time I clicked, but the parent swf still remained at the back which is overlapped by the child.