Error 2050 with Menu and States - DisplayObject must be a child of the caller.
Hi,
I'm starting an application using States and a main Menu and
when you click on the menu Item it changes the currentState.
I was doing fine until I wanted to dock the Menu using an
ApplicationControlBar.
You can see the error message:
http://dev2003.greatkingcasino.com/flex/casinomanagement.html
My Idea is have always the menu on top and use States for
each one of the menuItems. How can be done?
Thanks,
Paul
Code:
AS File:
// MENU PERMISSIONS
private function initApp():void
dsData.send();
}//initApp
private function onResultMenuData(oEvent:ResultEvent):void
xlcMenuData = new
XMLListCollection(oEvent.result.children());
private function menuHandler(oEvent:MenuEvent):void {
currentState = oEvent.item.@label;
MXML File:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml"
creationComplete="initApp()" currentState="navigation">
<mx:Script source="functions.as"/>
<mx:states>
<mx:State name="logIn">
blah
</mx:State>
<mx:State name="navigation">
<mx:SetProperty name="layout" value="absolute"/>
<mx:AddChild position="lastChild">
<mx:ApplicationControlBar dock="true">
<mx:MenuBar x="0" y="0"
dataProvider="{xlcMenuData}"
labelField="@label"
itemClick="menuHandler(event);">
</mx:MenuBar>
</mx:ApplicationControlBar>
</mx:AddChild>
</mx:State>
<mx:State name="Customer Detail" basedOn="navigation">
<mx:AddChild position="lastChild">
<mx:Panel x="0" y="111" width="464" height="247"
layout="absolute" title="General Information">
</mx:Panel>
</mx:AddChild>
<mx:AddChild position="lastChild">
<mx:Panel x="472" y="111" width="350" height="530"
layout="absolute" title="Customer Information">
<mx:Form x="0" y="0" width="310" height="100%">
</mx:Form>
<mx:ControlBar>
<mx:Button label="Update Information"/>
</mx:ControlBar>
</mx:Panel>
</mx:AddChild>
<mx:AddChild position="lastChild">
<mx:Panel x="0" y="366" width="300" height="247"
layout="absolute" title="Login Information">
</mx:Panel>
</mx:AddChild>
<mx:AddChild position="lastChild">
<mx:Label text="User Name" x="347" y="59"/>
</mx:AddChild>
<mx:AddChild position="lastChild">
<mx:TextInput id="idCustomerID" text="1" x="421"
y="57"/>
</mx:AddChild>
<mx:AddChild position="lastChild">
<mx:Button label="Search"
click="netService.GetCustomerDetails(idCustomerID.text);" x="589"
y="57"/>
</mx:AddChild>
</mx:State>
<mx:State name="Player Stats" basedOn="navigation">
<mx:AddChild position="lastChild">
<mx:Canvas label="Canvas 1" width="260"
backgroundColor="#e2e2e2" id="canvas6" height="580" y="61">
<mx:DateChooser x="10" y="66" id="datechooser1"/>
<mx:DateChooser x="10" y="290" id="datechooser2"/>
<mx:Button x="185" y="10" label="Search"
id="button1"/>
<mx:NumericStepper x="192" y="92" id="iniHour1" value="0"
minimum="0" maximum="23"/>
<mx:NumericStepper x="192" y="148" id="iniMinute1"
value="0" minimum="0" maximum="59"/>
<mx:Label x="10" y="40" text="Start Date"
fontWeight="bold" id="label1"/>
<mx:Label x="10" y="264" text="End Date"
fontWeight="bold" id="label2"/>
<mx:Label x="192" y="66" text="Hour" id="label3"/>
<mx:Label x="192" y="122" text="Minute" id="label4"/>
<mx:NumericStepper x="192" y="204" id="iniSecond1"
value="0" minimum="0" maximum="0"/>
<mx:Label x="192" y="178" text="Second" id="label5"/>
<mx:NumericStepper x="192" y="316" id="endHour1"
value="23" minimum="0" maximum="23"/>
<mx:NumericStepper x="192" y="372" id="endMinute1"
value="59" minimum="0" maximum="59"/>
<mx:Label x="192" y="290" text="Hour" id="label6"/>
<mx:Label x="192" y="346" text="Minute" id="label7"/>
<mx:NumericStepper x="192" y="428" id="endSecond1"
value="59" minimum="59" maximum="59"/>
<mx:Label x="192" y="402" text="Second" id="label8"/>
</mx:Canvas>
</mx:AddChild>
<mx:AddChild position="lastChild">
<mx:Canvas label="Canvas 2" width="486"
backgroundColor="#e2e2e2" id="canvas7" height="1200" x="268"
y="61">
<mx:DataGrid x="10" y="10" width="402" height="100%"
id="datagrid1">
<mx:columns>
<mx:DataGridColumn headerText="Player"
dataField="col1"/>
<mx:DataGridColumn headerText="Risk"
dataField="col2"/>
<mx:DataGridColumn headerText="Win" dataField="col3"/>
<mx:DataGridColumn headerText="Casino win"
dataField="col1"/>
<mx:DataGridColumn headerText="Percent (%)"
dataField="col2"/>
</mx:columns>
</mx:DataGrid>
</mx:Canvas>
</mx:AddChild>
</mx:State>
<mx:State name="Casino Usage" basedOn="navigation">
</mx:State>
</mx:states>
<mx:HTTPService id="dsData" url="MenuData.xml"
resultFormat="e4x" result="onResultMenuData(event)"/>
</mx:Application>
Text
try{
catch(error:Error){
finally{
(look up error handling in documentation)
Similar Messages
-
Evenin' all.
I'm creating a Flash application split up into scenes. One of the scenes is divided into sections of ten frames with keyframes at 1 (home, 10, 20, 30, 40, 50, 60, 70, 80 and 90. Frame #1 is the menu and contains the buttons to skip to each section using the gotoAndStop(); command.
However, I want to be able to skip to #1 from any point using Next/Previous buttons. I have declared the buttons in frame 1 of scene 1 as follows:
I have declared the buttons in frame 1 of scene 1 as follows:
Code:
var nextButton:Button = new Button();
var prevButton:Button = new Button();
var homeButton:Button = new Button();
At each point, I use addChild(nextButton) to add the buttons to the stage, and when the buttons are clicked it removes them as follows:
Code:
nextButton.addEventListener(MouseEvent.CLICK, goNext);
function goNext(e:Event):void
removeChild(videoPlayer);
removeChild(prevButton);
removeChild(nextButton);
removeChild(homeButton);
gotoAndStop(20);
Now, all the 'Next' buttons work but none of the 'Previous' buttons work, when all they do is gotoAndStop() ten frames backwards rather than ten frames forwards, I keep getting this error message:
Code:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at Prototype_fla::MainTimeline/goBack()
The same is happening with the Home buttons, which skip from whichever frame the user is on to the menu. The Next buttons are the only ones working consistently.
Please help, this is really stressing me out, I'm on Flash CS4.
CheersYou can`t remove the target of your event while it is "active"
you wrote....
nextButton.addEventListener(MouseEvent.CLICK, goNext);
function goNext(e:Event):void
removeChild(videoPlayer);
removeChild(prevButton);
removeChild(nextButton);
removeChild(homeButton);
gotoAndStop(20);
instead you should write sth. like:
nextButton.addEventListener(MouseEvent.CLICK, goNext);
function goNext(e:Event):void
// to be sure that there`s actualloy sth. to remove
if(videoPlayer!=null){
removeChild(videoPlayer);
//similar
removeChild(prevButton);
removeChild(homeButton);
e.currentTarget.removeEventListener(MouseEvent.CLICK, goNext)
removeChild(e.currentTarget);
gotoAndStop(20);
this is probably similar in your other function, too -
Error #2025: The supplied DisplayObject must be a child of the caller.
Hi All,
I would very much appreciate any help with this.
I am working on a flash piece that will play 4 videos, depending on the button pressed. First button will launch first video, 2nd - 2nd video and so on. Once the Video is done playing, close_btn, learn_more_btn and replay_btn appear, in addition to an ending image that is different for each of the videos( BoxLivePic, BoxSleepPic and BoxFeelPic). So - actually 4 things appear once the movie stops playing and the last image depends on which buttons was clicked...
My issue is, when I click the close button( andI'm sure same will apply for the other 2 buttons), I get the error below:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at AER1_r5_fla::MainTimeline/closeVideo()
I understand is that it's because each Picture is not actually added to the display list, unless the proper button was clicked.. however, I don't know how to fix that! I hope this makes some sence - Below is all of my Code... Thanks a bunch in advance:
import com.greensock.*;
import com.greensock.easing.*;
import com.greensock.easing.CustomEase;
import com.greensock.loading.VideoLoader;
import flash.display.Sprite;
import com.greensock.events.LoaderEvent;
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
//Last Buttons Variables
var close_btn:Button_close = new Button_close();
var learn_more_btn:Button_learn_more = new Button_learn_more();
var replay_btn:Button_replay = new Button_replay();
//Last Pic Variables
var BoxLivePic:Box_Live_Pic = new Box_Live_Pic();
var BoxFeelPic:Box_Feel_Pic = new Box_Feel_Pic();
var BoxSleepPic:Box_Sleep_Pic = new Box_Sleep_Pic();
// Video Variables
var Video_Breathe:VideoLoader = new VideoLoader("Breathe_Video.f4v",{container:this,
x:0, y:0});
var Video_Live:VideoLoader = new VideoLoader("Live_Video.f4v",{conainer:this,
x:0, y:0});
var Video_Sleep:VideoLoader = new VideoLoader("Sleep_Video.f4v",{conainer:this,
x:0, y:0});
var Video_Feel:VideoLoader = new VideoLoader("Feel_Video.f4v",{conainer:this,
x:0, y:0});
// Video complete Event Listeners
Video_Breathe.addEventListener(VideoLoader.VIDEO_COMPLETE, donePlaying_breathe);
Video_Live.addEventListener(VideoLoader.VIDEO_COMPLETE, donePlaying_live);
Video_Sleep.addEventListener(VideoLoader.VIDEO_COMPLETE, donePlaying_sleep);
Video_Feel.addEventListener(VideoLoader.VIDEO_COMPLETE, donePlaying_feel);
OverwriteManager.init(OverwriteManager.AUTO);
//Buttons Invisible
breathe_mc.learn_btn.visible = false;
breathe_mc.video_btn.visible = false;
live_mc.learn_btn.visible = false;
live_mc.video_btn.visible = false;
sleep_mc.learn_btn.visible = false;
sleep_mc.video_btn.visible = false;
feel_mc.learn_btn.visible = false;
feel_mc.video_btn.visible = false;
//Custom Eases
CustomEase.create("myCustomEase", [{s:0,cp:1.14999,e:1.4},{s:1.4,cp:1.65,e:1}]);
CustomEase.create("myCustomEase2",[{s:0,cp:0.97,e:1.22},{s:1.22,cp:1.47,e:1}]);
var timeline:TimelineLite = new TimelineLite({onComplete:showBreathe});
addChild(removeChild(better_mc));
TweenLite.to(better_mc,2,{alpha:1, y:186.6,ease:Bounce.easeOut});
timeline.appendMultiple([
TweenLite.to(breathe_mc, 1, {alpha:1,y:117,ease:CustomEase.byName("myCustomEase2")}),
TweenLite.to(live_mc, 1, {alpha:1,y:117, y:37, ease:CustomEase.byName("myCustomEase2")}),
TweenLite.to(sleep_mc, 1, {alpha:1,y:77, ease:CustomEase.byName("myCustomEase2")}),
TweenLite.to(feel_mc, 1, {alpha:1,y:77, ease:CustomEase.byName("myCustomEase2")})],1,TweenAlign.START, .2);
function showBreathe():void
breathe_mc.learn_btn.visible = true;
breathe_mc.video_btn.visible = true;
TweenLite.to(breathe_mc.learn_btn, .5, {alpha:1});
TweenLite.to(breathe_mc.video_btn, .5, {alpha:1});
TweenLite.to(breathe_mc, 1, {y:77, ease:CustomEase.byName("myCustomEase")});
//Show Text
TweenLite.to(breathe_txt_mc, 1,{alpha:1});
//Event Listeners
breathe_mc.addEventListener(MouseEvent.MOUSE_OVER, breatheOpen);
live_mc.addEventListener(MouseEvent.MOUSE_OVER, liveOpen);
sleep_mc.addEventListener(MouseEvent.MOUSE_OVER, sleepOpen);
feel_mc.addEventListener(MouseEvent.MOUSE_OVER, feelOpen);
//Event Listeners for Playing Video
breathe_mc.video_btn.addEventListener(MouseEvent.MOUSE_DOWN, breathe_play_video);
live_mc.video_btn.addEventListener(MouseEvent.MOUSE_DOWN, live_play_video);
sleep_mc.video_btn.addEventListener(MouseEvent.MOUSE_DOWN, sleep_play_video);
feel_mc.video_btn.addEventListener(MouseEvent.MOUSE_DOWN, feel_play_video);
// Event Listener for Close Video
close_btn.addEventListener(MouseEvent.MOUSE_DOWN, closeVideo);
//Functions for VIDEO and LEARN MORE buttons
function breathe_play_video(event:MouseEvent):void {
Video_Breathe.load();
this.addChild(Video_Breathe.content);
function live_play_video(event:MouseEvent):void {
Video_Live.load();
this.addChild(Video_Live.content);
function sleep_play_video(event:MouseEvent):void {
Video_Sleep.load();
this.addChild(Video_Sleep.content);
function feel_play_video(event:MouseEvent):void {
Video_Feel.load();
this.addChild(Video_Feel.content);
function closeVideo(event:MouseEvent):void {
Video_Breathe.unload();
Video_Sleep.unload();
Video_Feel.unload();
Video_Live.unload();
removeChild(close_btn);
removeChild(learn_more_btn);
removeChild(replay_btn);
removeChild(BoxLivePic);
removeChild(BoxSleepPic);
//removeChild(BoxFeelPic);
// Last Breathe Buttons Added to Stage
function donePlaying_breathe(e:Event):void {
addChild(close_btn);
addChild(learn_more_btn);
addChild(replay_btn)
close_btn.x = 313;
close_btn.y = 183;
learn_more_btn.x = 434;
learn_more_btn.y = 183;
replay_btn.x = 554;
replay_btn.y = 183;
// Last Live Buttons
function donePlaying_live(e:Event):void {
addChild(BoxLivePic);
addChild(close_btn);
addChild(learn_more_btn);
addChild(replay_btn)
close_btn.x = 43;
close_btn.y = 183;
learn_more_btn.x = 164;
learn_more_btn.y = 183;
replay_btn.x = 284;
replay_btn.y = 183;
// Last Sleep Buttons
function donePlaying_sleep(e:Event):void {
addChild(BoxSleepPic);
addChild(close_btn);
addChild(learn_more_btn);
addChild(replay_btn)
close_btn.x = 313;
close_btn.y = 183;
learn_more_btn.x = 434;
learn_more_btn.y = 183;
replay_btn.x = 554;
replay_btn.y = 183;
//Last Feel Buttons
function donePlaying_feel(e:Event):void {
addChild(BoxFeelPic);
addChild(close_btn);
addChild(learn_more_btn);
addChild(replay_btn)
close_btn.x = 313;
close_btn.y = 183;
learn_more_btn.x = 434;
learn_more_btn.y = 183;
replay_btn.x = 554;
replay_btn.y = 183;
// Functions Breathe
function breatheOpen(event:MouseEvent):void
TweenLite.to(breathe_mc, 1, {y:77, ease:Elastic.easeOut});
TweenLite.to(breathe_mc.learn_btn, .5, {alpha:1});
TweenLite.to(breathe_mc.video_btn, .5, {alpha:1});
//Close Live
TweenLite.to(live_mc, 1, {y:117, ease:Elastic.easeOut});
TweenLite.to(live_mc.learn_btn, .5, {alpha:0});
TweenLite.to(live_mc.video_btn, .5, {alpha:0});
//Close Sleep
TweenLite.to(sleep_mc, 1, {y:77, ease:Elastic.easeOut});
TweenLite.to(sleep_mc.learn_btn, .5, {alpha:0});
TweenLite.to(sleep_mc.video_btn, .5, {alpha:0});
//Close Feel
TweenLite.to(feel_mc, 1, {y:77, ease:Elastic.easeOut});
TweenLite.to(feel_mc.learn_btn, .5, {alpha:0});
TweenLite.to(feel_mc.video_btn, .5, {alpha:0});
//Show Pic
TweenLite.to(pic_breathe_mc, .5, {alpha:1});
//Hide Other Pics
TweenLite.to(pic_live_mc, .5, {alpha:0});
TweenLite.to(pic_sleep_mc, .5, {alpha:0});
TweenLite.to(pic_feel_mc, .5, {alpha:0});
//Show Text
TweenLite.to(breathe_txt_mc, 1,{alpha:1});
//Hide Other Text
TweenLite.to(live_txt_mc, 1,{alpha:0});
TweenLite.to(sleep_txt_mc, 1,{alpha:0});
TweenLite.to(feel_txt_mc, 1,{alpha:0});
// Functions live
function liveOpen(event:MouseEvent):void
TweenLite.to(live_mc, 1, {y:77, ease:Elastic.easeOut});
live_mc.learn_btn.visible = true;
live_mc.video_btn.visible = true;
TweenLite.to(live_mc.learn_btn, .5, {alpha:1});
TweenLite.to(live_mc.video_btn, .5, {alpha:1});
//Close Breathe
TweenLite.to(breathe_mc, 1, {y:117, ease:Elastic.easeOut});
TweenLite.to(breathe_mc.learn_btn, .5, {alpha:0});
TweenLite.to(breathe_mc.video_btn, .5, {alpha:0});
//Close Sleep
TweenLite.to(sleep_mc, 1, {y:77, ease:Elastic.easeOut});
TweenLite.to(sleep_mc.learn_btn, .5, {alpha:0});
TweenLite.to(sleep_mc.video_btn, .5, {alpha:0});
//Close Feel
TweenLite.to(feel_mc, 1, {y:77, ease:Elastic.easeOut});
TweenLite.to(feel_mc.learn_btn, .5, {alpha:0});
TweenLite.to(feel_mc.video_btn, .5, {alpha:0});
//Show Pic
TweenLite.to(pic_live_mc, .5, {alpha:1});
//Hide Other Pics
TweenLite.to(pic_sleep_mc, .5, {alpha:0});
TweenLite.to(pic_feel_mc, .5, {alpha:0});
//Show Text
TweenLite.to(live_txt_mc, 1,{alpha:1});
//Hide Other Text
TweenLite.to(breathe_txt_mc, 1,{alpha:0});
TweenLite.to(sleep_txt_mc, 1,{alpha:0});
TweenLite.to(feel_txt_mc, 1,{alpha:0});
// Functions sleep
function sleepOpen(event:MouseEvent):void
TweenLite.to(sleep_mc, 1, {y:37, ease:Elastic.easeOut});
sleep_mc.learn_btn.visible = true;
sleep_mc.video_btn.visible = true;
TweenLite.to(sleep_mc.learn_btn, .5, {alpha:1});
TweenLite.to(sleep_mc.video_btn, .5, {alpha:1});
//Close Breathe
TweenLite.to(breathe_mc, 1, {y:117, ease:Elastic.easeOut});
TweenLite.to(breathe_mc.learn_btn, .5, {alpha:0});
TweenLite.to(breathe_mc.video_btn, .5, {alpha:0});
//Close Live
TweenLite.to(live_mc, 1, {y:117, ease:Elastic.easeOut});
TweenLite.to(live_mc.learn_btn, .5, {alpha:0});
TweenLite.to(live_mc.video_btn, .5, {alpha:0});
//Close Feel
TweenLite.to(feel_mc, 1, {y:77, ease:Elastic.easeOut});
TweenLite.to(feel_mc.learn_btn, .5, {alpha:0});
TweenLite.to(feel_mc.video_btn, .5, {alpha:0});
//Show Pic
TweenLite.to(pic_sleep_mc, .5, {alpha:1});
//Hide Other Pics
TweenLite.to(pic_feel_mc, .5, {alpha:0});
//Show Text
TweenLite.to(sleep_txt_mc, 1,{alpha:1});
//Hide Other Text
TweenLite.to(live_txt_mc, 1,{alpha:0});
TweenLite.to(breathe_txt_mc, 1,{alpha:0});
TweenLite.to(feel_txt_mc, 1,{alpha:0});
// Functions feel
function feelOpen(event:MouseEvent):void
TweenLite.to(feel_mc, 1, {y:37, ease:Elastic.easeOut});
feel_mc.learn_btn.visible = true;
feel_mc.video_btn.visible = true;
TweenLite.to(feel_mc.learn_btn, .5, {alpha:1});
TweenLite.to(feel_mc.video_btn, .5, {alpha:1});
//Close Breathe
TweenLite.to(breathe_mc, 1, {y:117, ease:Elastic.easeOut});
TweenLite.to(breathe_mc.learn_btn, .5, {alpha:0});
TweenLite.to(breathe_mc.video_btn, .5, {alpha:0});
//Close Live
TweenLite.to(live_mc, 1, {y:117, ease:Elastic.easeOut});
TweenLite.to(live_mc.learn_btn, .5, {alpha:0});
TweenLite.to(live_mc.video_btn, .5, {alpha:0});
//Close Sleep
TweenLite.to(sleep_mc, 1, {y:77, ease:Elastic.easeOut});
TweenLite.to(sleep_mc.learn_btn, .5, {alpha:0});
TweenLite.to(sleep_mc.video_btn, .5, {alpha:0});
//Show Pic
TweenLite.to(pic_feel_mc, .5, {alpha:1});
//Show Text
TweenLite.to(feel_txt_mc, 1,{alpha:1});
//Hide Other Text
TweenLite.to(live_txt_mc, 1,{alpha:0});
TweenLite.to(sleep_txt_mc, 1,{alpha:0});
TweenLite.to(breathe_txt_mc, 1,{alpha:0});This error means that you are trying to access an object on display list that (object) is not there.
For example, if close_btn instance is not added as child, the following line will throw this error:
removeChild(close_btn);
One of the ways to remedy this is to confirm that the object is added:
if(contains(close_btn)) removeChild(close_btn); -
DisplayObject must be a child of the caller.
I am trying to remove the existing childs (combobox and pods are the content in the page) using
viewStack.selectedChild.removeAllChildren();
in a tab click from the Viewstacks canvas.
then I am trying to add new child.
it gives this error.
The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.core::Container/setChildIndex()[C:\autobuild\3.2.0\frameworks\projects\framework\src\m x\core\Container.as:2449]
Please help me to fix thisprivate function onApplicationComplete():void{
var arrView:Array =new Array();arrView=viewStack.getChildren();
viewLength=arrView.length;
// Load pods.xml, which contains the pod layout.
var httpService:HTTPService = new HTTPService();httpService.url =
"data/pods.xml";httpService.resultFormat =
"e4x";httpService.addEventListener(FaultEvent.FAULT, onFaultHttpService);
httpService.addEventListener(ResultEvent.RESULT, onResultHttpService);
httpService.send();
private function onFaultHttpService(e:FaultEvent):void{
Alert.show(
"Unable to load data/pods.xml.");}
public var viewXMLList:XMLList =new XMLList();
private function onResultHttpService(e:ResultEvent):void{
viewXMLList = e.result.view;
var podcontentbase:PodContentBase=new PodContentBase;
var containerWindowManagerHash:Object = new Object();
var len:Number = viewXMLList.length();
if (podLayoutManagers.length!=0)podLayoutManagers.splice(0,podLayoutManagers.length);
for (var i:Number = 0; i < len; i++) // Loop through the view nodes.{
// Create a canvas for each view node.
var canvas:Canvas = new Canvas();
// PodLayoutManager handles resize and should prevent the need for
// scroll bars so turn them off so they aren't visible during resizes.canvas.horizontalScrollPolicy =
"off";canvas.verticalScrollPolicy =
"off";canvas.label = viewXMLList[i].@label;
canvas.percentWidth = 100;
canvas.percentHeight = 100;
viewStack.addChild(canvas);
traceDL(viewStack);
// Create a manager for each view.
var manager:PodLayoutManager = new PodLayoutManager();manager.container = canvas;
manager.id = viewXMLList[i].@id;
manager.addEventListener(LayoutChangeEvent.UPDATE, StateManager.setPodLayout);
// Store the pod xml data. Used when view is first made visible.podDataDictionary[manager] = viewXMLList[i].pod;
//podcontentbase.podDataDictionarycopy[manager] = viewXMLList[i].pod;
podLayoutManagers.push(manager);
onchange();
private function onchange():void{
tabBar.dataProvider=viewStack;
var index:Number = StateManager.getViewIndex();
// Make sure the index is not out of range.
// This can happen if a tab view was saved but then tabs were subsequently removed from the XML.index = Math.min(tabBar.numChildren - 1, index);
onItemClickTabBar(
new ItemClickEvent(ItemClickEvent.ITEM_CLICK, false, false, null, index));tabBar.selectedIndex = index;
private var indextab:Number;
private function onItemClickTabBar(e:ItemClickEvent):void{
indextab = e.index;
StateManager.setViewIndex(indextab);
// Save the view index.viewStack.selectedIndex = indextab;
if( this.contains( viewStack.selectedChild) )viewStack.selectedChild.removeAllChildren();
traceDL(
this); -
Unexplainable exception: "The supplied DisplayObject must be a child of the caller"
What am I missing in the following code? How is the indicated exception possible? It seems to me that it simply "can't happen", yet it reliably does.
I'm checking to see if a component is a child of "this", and if it is, I attempt to remove that child. The remove faults. Any thoughts?
if (tf != null && this.contains(tf) == true)
this.removeChild(tf); // Generates exception "The supplied DisplayObject must be a child of the caller"
tf=null;Check out the documentation for contains(). I suspect that tf isn't actually a child of this, but rather a grand child, or great grand child, ... .
-
Hi guys, I'm pretty new to as3 and I'm trying to make a game where the player supposedly clicks on the stage and 3 towers which I've spawned dynamically should shoot towards the area. Everything works in terms of tower rotation, etc, but the bullets will not be removed from the stage when I exit the level into another scene. The boundary checking is fine, too.
Here's a part of the code in the Main.as file.
private function clickTower1(e:MouseEvent):void
for each (var tower1:mcTower1 in tower1Array)
var newLaser1:mcLaser1 = new mcLaser1();
newLaser1.rotation = tower1.rotation;
newLaser1.x = tower1.x + Math.cos(newLaser1.rotation * Math.PI / 180) * 40;
newLaser1.y = tower1.y + Math.sin(newLaser1.rotation * Math.PI / 180) * 40;
newLaser1.addEventListener(Event.ENTER_FRAME, laser1Handler);
tower1BulletArray.push(newLaser1); stage.addChild(newLaser1);
private function laser1Handler(e:Event):void
//Make laser move in direction of turret.
var newLaser1:MovieClip = e.currentTarget as MovieClip;
newLaser1.x += Math.cos(newLaser1.rotation * Math.PI / 180) * laser1Speed;
newLaser1.y += Math.sin(newLaser1.rotation * Math.PI / 180) * laser1Speed;
//Boundary checking if (newLaser1.x < -50 || newLaser1.x > 800 || newLaser1.y > 600 || newLaser1.y < -50)
newLaser1.removeEventListener(Event.ENTER_FRAME, laser1Handler); stage.removeChild(newLaser1);
tower1BulletArray.splice(0, 1);
I have a function called exitLevel, which basically, as the name states, exits the level when a button is clicked. It worked perfectly before I started coding the bullets.
private function exitLevel(e:MouseEvent):void
stage.frameRate = 6;
gamePaused = false;
clearLevel();
gotoAndStop(1, 'exitLevel');
btnExitLevel.addEventListener(MouseEvent.CLICK, levelSelect1);
private function clearLevel():void
stage.removeEventListener(Event.ENTER_FRAME, update);
stage.removeChild(buttonCreep1); stage.removeChild(buttonCreep2);
for (var i = creep1Array.length - 1; i >= 0; i--)
removeChild(creep1Array[i]);
creep1Array.splice(i, 1);
//trace ("Creep1 Removed");
for (var j = creep2Array.length - 1; j >= 0; j--)
removeChild(creep2Array[j]);
creep2Array.splice(j, 1);
//trace ("Creep2 Removed");
for (var k = tower1Array.length - 1; k >= 0; k--)
removeChild(tower1Array[k]); tower1Array.splice(k, 1);
for (var l = tower1BulletArray.length - 1; l >= 0; l--)
stage.removeChild(tower1BulletArray[l]);
tower1BulletArray.splice(0, 1);
After debugging, it says the error is at the end, where i try to remove the child from the stage. What is wrong? Sorry, I'm a beginner at as3 so any answers might have to be spoonfeeding... I'll try to learn and understand, though. Thanks!
I did take some of the code off of a guide on the web, and I don't understand it totally, so can someone explain to me what this code does as well? What is e.currentTarget? Thanks!
var newLaser1:MovieClip = e.currentTarget as MovieClip;
Here's the full .as file if anybody wants to take a look. http://pastebin.com/5ff4BQa5Hi, I managed to solve the errors (kind of) by using this code.
for (var i:int = tower1BulletArray.length - 1; i >= 0; i--)
if (tower1BulletArray.parent)
tower1BulletArray[l].parent.removeChild(tower1BulletArray[l]);
tower1BulletArray.splice(i, 1);
However, the problem still persists that the bullets stay in the screen after I change the scene. Any solution? Thanks! -
Hello
I am having some trouble adding UI controls dynamically. Mostly with radio buttons.
Here is an example that demonstrates my problem:
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationPolicy="all"
>
<fx:Script>
<![CDATA[
import mx.containers.Form;
import mx.containers.Panel;
import mx.controls.Label;
import mx.controls.NumericStepper;
import mx.controls.RadioButton;
private var theChar:String = "B";
protected function btnAdd_clickHandler(event:MouseEvent):void
var theForm:Form = new Form();
theForm.label = theChar;
//1. Label
var myLabel:Label = new Label();
myLabel.text = "My Label";
myLabel.width=120;
theForm.addChild(myLabel);
//2. Numeric Stepper
var myNumStepper:NumericStepper = new NumericStepper();
myNumStepper.id = "numPointHigh" + theChar;
myNumStepper.name = "numPointHigh" + theChar;
myNumStepper.minimum = 0;
myNumStepper.maximum = 120;
myNumStepper.width = 50;
myNumStepper.height = 30;
theForm.addChild(myNumStepper);
//3. radio button
var myRadioButton:RadioButton = new RadioButton;
myRadioButton.id = "myRadioButton" + theChar;
myRadioButton.name = "myRadioButton" + theChar;
myRadioButton.label = "my radio button";
myRadioButton.selected = true;
theForm.addChild(myRadioButton);
//4. Panel
var thePanel:Panel = new Panel();
thePanel.width = 300;
thePanel.height = 475;
thePanel.name=theChar;
thePanel.title = "My Profile Panel";
thePanel.setStyle("backgroundColor", "blue");
//add the form to the panel
thePanel.addChild(theForm);
//add the Panel to the list control
myList.addChild(thePanel);
protected function btnClear_clickHandler(event:MouseEvent):void
var numChildren:Number = myList.numChildren;
for(var i:Number=numChildren - 1; i > -1; i--){
myList.removeChildAt(i);
]]>
</fx:Script>
<mx:VBox width="100%">
<mx:List id="myList" />
<mx:Button id="btnAdd" label="Add a panel" click="btnAdd_clickHandler(event)" color="black"/>
<mx:Button id="btnClear" label="Clear" click="btnClear_clickHandler(event)" color="black" />
</mx:VBox>
</s:Application>
^ Run that. Click the "Add a panel" button. Then click "Clear". Then click the "Add a panel" button again. You will see the error:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.core::Container/getChildIndex()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core \Container.as:2833]
at mx.containers::Panel/getChildIndex()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\co ntainers\Panel.as:1174]
at mx.controls::RadioButtonGroup/breadthOrderCompare()[E:\dev\4.0.0\frameworks\projects\fram ework\src\mx\controls\RadioButtonGroup.as:600]
at mx.controls::RadioButtonGroup/breadthOrderCompare()[E:\dev\4.0.0\frameworks\projects\fram ework\src\mx\controls\RadioButtonGroup.as:611]
at mx.controls::RadioButtonGroup/breadthOrderCompare()[E:\dev\4.0.0\frameworks\projects\fram ework\src\mx\controls\RadioButtonGroup.as:611]
at Array$/_sort()
at Array/http://adobe.com/AS3/2006/builtin::sort()
at mx.controls::RadioButtonGroup/http://www.adobe.com/2006/flex/mx/internal::addInstance()[E:\dev\4.0.0\frameworks\projects \framework\src\mx\controls\RadioButtonGroup.as:465]
at mx.controls::RadioButton/addToGroup()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\c ontrols\RadioButton.as:574]
at mx.controls::RadioButton/commitProperties()[E:\dev\4.0.0\frameworks\projects\framework\sr c\mx\controls\RadioButton.as:514]
at mx.core::UIComponent/validateProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\ mx\core\UIComponent.as:7772]
at mx.managers::LayoutManager/validateProperties()[E:\dev\4.0.0\frameworks\projects\framewor k\src\mx\managers\LayoutManager.as:572]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.0.0\frameworks\projects\frame work\src\mx\managers\LayoutManager.as:730]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.0.0\frameworks\projec ts\framework\src\mx\managers\LayoutManager.as:1072]
I do not understand why I cannot re-add the radio button? If you comment out the code for the radio button (comment section #3.) you can re-add the panels easily. It is only happening when I have radio buttons being added to the form/panel.
Why is this happening and how do I fix it? Why is this only happening to radio buttons? I thought I had this fixed^ well, okay, but that's not the problem.
here, i removed list and replaced with Panel. same problem on the radio buttons.
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:containers="com.dougmccune.containers.*"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationPolicy="all"
>
<fx:Script>
<![CDATA[
import mx.containers.Form;
import mx.containers.Panel;
import mx.controls.Label;
import mx.controls.NumericStepper;
import mx.controls.RadioButton;
private var theChar:String = "B";
protected function btnAdd_clickHandler(event:MouseEvent):void
var theForm:Form = new Form();
theForm.label = theChar;
//1. Label
var myLabel:Label = new Label();
myLabel.text = "My Label";
myLabel.width=120;
theForm.addChild(myLabel);
//2. Numeric Stepper
var myNumStepper:NumericStepper = new NumericStepper();
myNumStepper.id = "numPointHigh" + theChar;
myNumStepper.name = "numPointHigh" + theChar;
myNumStepper.minimum = 0;
myNumStepper.maximum = 120;
myNumStepper.width = 50;
myNumStepper.height = 30;
theForm.addChild(myNumStepper);
//3. radio button
var myRadioButton:RadioButton = new RadioButton;
myRadioButton.id = "myRadioButton" + theChar;
myRadioButton.name = "myRadioButton" + theChar;
myRadioButton.label = "my radio button";
myRadioButton.selected = true;
theForm.addChild(myRadioButton);
//4. Panel
var thePanel:Panel = new Panel();
thePanel.width = 300;
thePanel.height = 475;
thePanel.name=theChar;
thePanel.title = "My Profile Panel";
thePanel.setStyle("backgroundColor", "blue");
//add the form to the panel
thePanel.addChild(theForm);
//add the Panel to the list control
myContainer.addChild(thePanel);
protected function btnClear_clickHandler(event:MouseEvent):void
var numChildren:Number = myContainer.numChildren;
for(var i:Number=numChildren - 1; i > -1; i--){
myContainer.removeChildAt(i);
]]>
</fx:Script>
<mx:VBox width="100%">
<mx:Panel id="myContainer" />
<mx:Button id="btnAdd" label="Add a panel" click="btnAdd_clickHandler(event)" color="black"/>
<mx:Button id="btnClear" label="Clear" click="btnClear_clickHandler(event)" color="black" />
</mx:VBox>
</s:Application>
Any idea why radio buttons causing this to happen? If I comment out the radio button, this works fine. This is really baffling me.
The exception is thrown when the dynamically created panel (thePanel) is added to the main Panel (myContainer):
myContainer.addChild(thePanel); <--- causes the exception!
^ Why would radio buttons make a difference on "thePanel"?? How can I enforce parent-child relationship, explicitly? .parent is read-only -
Cannot remove display object: must be child of the caller
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at working_loader_container3_fla::MainTimeline/frame4()
at flash.display::MovieClip/prevFrame()
I have been getting this error after a bunch of different ways of trying this. I am attempting to create a new instance of my movieclip which displays external images via xml. I want a new instance of the movieclip every other frame and need to be able to remove each instance on every other frame. It will work going forwards, with a remove child call but as soon as I go back a frame, the error pops up.
I tried using an if statement, but to no avail.
I have attched an extremely rudimentary example of my issue, any help would be appreciated. The problem is best illustrated at frame 4 layer 2.Thanks for the help. I finally got it to work. Below is what I put on the top layer. I called the addChild() method after creating a new instance of my MovieClip class on each frame I wanted the images to appear on the second layer. Not the most elegant of solutions but worked. (I'm a rookie.)
next_btn.addEventListener(MouseEvent.CLICK, goNext);
back_btn.addEventListener(MouseEvent.CLICK, goBack);
function goNext(event:MouseEvent):void {
nextFrame();
if(currentFrame == 2)
removeChild(container_mc);
if(currentFrame == 4)
removeChild(container_mc3);
function goBack(event:MouseEvent):void {
if(currentFrame == 3)
removeChild(container_mc3);
if(currentFrame == 5)
removeChild(container_mc5);
prevFrame(); -
My Ipod Touch is disabled and when I connect to Itunes to recover it, it states that itiTunes could not connect to the iPod touch “iPod touch” because it is locked with a passcode. You must enter your passcode on the iPod touch before it can recover.
Place the iOS device in Recovery Mode and then connect to your computer and restore via iTunes. The iPod will be erased.
iOS: Forgot passcode or device disabled
If recovery mode does not work try DFU mode.
How to put iPod touch / iPhone into DFU mode « Karthik's scribblings
For how to restore:
iTunes: Restoring iOS software
To restore from backup see:
iOS: Back up and restore your iOS device with iCloud or iTunes
If you restore from iCloud backup the apps will be automatically downloaded. If you restore from iTunes backup the apps and music have to be in the iTunes library since synced media like apps and music are not included in the backup of the iOS device that iTunes makes.
You can redownload most iTunes purchases by:
Downloading past purchases from the App Store, iBookstore, and iTunes Store
If problem what happens or does not happen and when in the instructions? When you successfully get the iPod in recovery mode and connect to computer iTunes should say it found an iPod in recovery mode. -
I am trying to use Itunes to move my data from my iphone 4s that was backed up on my Macbook Pro. I keep getting an error code backing up from ITunes to new Iphone 5s:iTunes could not back up the iPhone “Karen’s iPhone” because it is locked with a passcode. You must enter your passcode on the iPhone before it can be backed up. On the Iphone it keeps telling me to add another network. I have put our home network on the Iphone. When I put the passcode in the phone does not give me enough time to put my Apple ID password in and it shuts off. Help!
<Email Edited by Host>FORCE IPAD INTO RECOVERY MODE
1. Turn off iPad
2. Turn on computer and launch iTunes (make sure you have the latest version of iTune)
3. Plug USB cable into computer's USB port
4. Hold Home button down and plug the other end of cable into docking port.
DO NOT RELEASE BUTTON until you see picture of iTunes and plug
5. Release Home button.
ON COMPUTER
6. iTunes has detected iPad in recovery mode. You must restore this iPad before it can be used with iTunes.
7. Select "Restore iPad"...
Note:
1. Data will be lost if you do not have backup
2. You must follow step 1 to step 4 VERY CLOSELY. -
IPAD is Disabled, tried to connect via itunes but get error "iTunes could not connect to the [device] because it is locked with a passcode. You must enter your passcode on the [device] before it can be used with iTunes."
iOS: Device disabled after entering wrong passcode
http://support.apple.com/kb/ht1212
How can I unlock my iPad if I forgot the passcode?
http://tinyurl.com/7ndy8tb
Using iPhone/iPad Recovery Mode
http://ipod.about.com/od/iphonetroubleshooting/a/Iphone-Recovery-Mode.htm
Saw this solution on another post about an iPad in a school enviroment. Might work on your iPad so you won't lose everything.
~~~~~~~~~~~~~
‘iPad is disabled’ fix without resetting using iTunes
Today I met my match with an iPad that had a passcode entered too many times, resulting in it displaying the message ‘iPad is disabled – Connect to iTunes’. This was a student iPad and since they use Notability for most of their work there was a chance that her files were not all backed up to the cloud. I really wanted to just re-activate the iPad instead of totally resetting it back to our default image.
I reached out to my PLN on Twitter and had some help from a few people through retweets and a couple of clarification tweets. I love that so many are willing to help out so quickly. Through this I also learned that I look like Lt. Riker from Star Trek (thanks @FillineMachine).
Through some trial and error (and a little sheer luck), I was able to reactivate the iPad without loosing any data. Note, this will only work on the computer it last synced with. Here’s how:
1. Configurator is useless in reactivating a locked iPad. You will only be able to completely reformat the iPad using Configurator. If that’s ok with you, go for it – otherwise don’t waste your time trying to figure it out.
2. Open iTunes with the iPad disconnected.
3. Connect the iPad to the computer and wait for it to show up in the devices section in iTunes.
4. Click on the iPad name when it appears and you will be given the option to restore a backup or setup as a new iPad (since it is locked).
5. Click ‘Setup as new iPad’ and then click restore.
6. The iPad will start backing up before it does the full restore and sync. CANCEL THE BACKUP IMMEDIATELY. You do this by clicking the small x in the status window in iTunes.
7. When the backup cancels, it immediately starts syncing – cancel this as well using the same small x in the iTunes status window.
8. The first stage in the restore process unlocks the iPad, you are basically just cancelling out the restore process as soon as it reactivates the iPad.
If done correctly, you will experience no data loss and the result will be a reactivated iPad. I have now tried this with about 5 iPads that were locked identically by students and each time it worked like a charm.
~~~~~~~~~~~~~
Try it and good luck. You have nothing more to lose if it doesn't work for you.
Cheers, Tom -
hi,
i m new to java still learning new concepts. When i was working with menu and panel i got this problem and i tried a lot but still i havn't got any success. the problem is i m creating a menu with two menuitem - one for "add item" and another for "modify item". What i want to do that on the same frame i want to create two panel of these two item. when i click "add item" option it should show add window and so with modify option. but the problem is if i click add item it shows the addpanel but when i click modify option (add item panel goes- ok ..) but it doesn't show the modify panel, it shows only the main frame on which menu is there.
i cannot understant what is happing here plz guide me.
thanximport java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
public class ajitAutomobile extends JFrame implements ActionListener
JMenuBar mb;
JMenu jobmenu;
JMenuItem newJobCard,modifyJobCard;
Font ft;
JPanel pnlnewJobCard,pnlmodifyJobCard;
Container con;
ajitAutomobile()
ft=new Font("Arial",0,12);
mb=new JMenuBar();
setJMenuBar(mb);
jobmenu=new JMenu(" Job Card Form");
mb.add(jobmenu).setFont(ft);
newJobCard=new JMenuItem("New Job Card Detail");
modifyJobCard=new JMenuItem("Modify Job Card Detail");
jobmenu.add(newJobCard).setFont(ft);
jobmenu.add(modifyJobCard).setFont(ft);
mb.add(requisition).setFont(ft);
con=getContentPane();
// setting panel for new JOb Card Entry
pnlnewJobCard=new JPanel();
pnlmodifyJobCard=new JPanel();
con.add(pnlmodifyJobCard);
con.add(pnlnewJobCard);
pnlnewJobCard.setBackground(Color.RED);
pnlnewJobCard.setVisible(false);
pnlmodifyJobCard.setBackground(Color.YELLOW);
pnlmodifyJobCard.setVisible(false);
//setting JFrame resources
setVisible(true);
setTitle("Ajit Automobile Service Center");
setSize(750,300);
setResizable(false);
newJobCard.addActionListener(this);
modifyJobCard.addActionListener(this);
public void actionPerformed(ActionEvent ae)
if (ae.getSource()==newJobCard)
pnlnewJobCard.setVisible(true);
pnlmodifyJobCard.setVisible(false);
if(ae.getSource()==modifyJobCard)
pnlnewJobCard.setVisible(false);
pnlmodifyJobCard.setVisible(true);
public static void main(String args[])
ajitAutomobile objajit=new ajitAutomobile();
objajit.show();
}so, this is the code and as i m expecting that when i click on "New Job Card Detail" then it should display pnlnewJobCard and when i will click "Modify Job Card Detail" it should display pnlmodifyJobCard panel but it is not working.It shows only that panel which is clicked first.
plz help
thnx, any answer will be appriciated. -
I was recently prompted to update my Itunes player to the latest version. I'm using Windows Vista. I was left with an error message MSVCR80.dll and consequently no new update. I uninstalled the old version and have tried to reinstall manually several times. No luck. Consequently I have no player.
Any ideas for a fix?Go to Control Panel > Add or Remove Programs (Win XP) or Programs and Features (later)
Remove all of these items in the following order:
iTunes
Apple Software Update
Apple Mobile Device Support (if this won't uninstall move on to the next item)
Bonjour
Apple Application Support
Reboot, download iTunes, then reinstall, either using an account with administrative rights, or right-clicking the downloaded installer and selecting Run as Administrator.
The uninstall and reinstall process will preserve your iTunes library and settings, but ideally you would back up the library and your other important personal documents and data on a regular basis. See this user tip for a suggested technique.
Please note:
Some users may need to follow all the steps in whichever of the following support documents applies to their system. These include some additional manual file and folder deletions not mentioned above.
HT1925: Removing and Reinstalling iTunes for Windows XP
HT1923: Removing and reinstalling iTunes for Windows Vista, Windows 7, or Windows 8
tt2 -
I got the message copied below in iTunes but I still need to keep my pics and videos. Passcode has been wrongly entered 100 times by my little chiled. Is it possible to still keep the data?
"iTunes could not connect to the [device] because it is locked with a passcode. You must enter your passcode on the [device] before it can be used with iTunes."PHONE LOCKED
If your phone is locked because you have incorrectly entered the unlock passcode too many times then follow the steps in this article http://support.apple.com/kb/ht1212 -
"itunes could not connect to the ipod becasue it is locked with a passcode. You must enter your passcose on the ipod before it can be used" BUT i cant unlock it and i dont have the original itunes that is was hooked up with before either. HELP! It wont let me restore because it is locked. I cannot unlock it. I have tried everything online. nothing works.
Place the iPod in recovery mode and then restore the iPod to factory defaults/new iPod. For recovery mode see:
iPhone and iPod touch: Unable to update or restore
Maybe you are looking for
-
Can't get face time to work. Know the username and password are right. Asks me to sign in...verifying... And then goes back to sign in...
-
Photo Prints Yellow and washed out
I am having problems printing photos on photo paper. I have windows 7 64 bit and all my hp software and drivers are up to date. My printer is c5180 and I have not had any trouble in the past. I upgraded to windows 7 in Dec., and have had several p
-
Hi to evrtybody, I'm new here. I have a problem with method post: I have a webapp that shows filter and report pages, I generate it with XHTML, through my Servlet. For example when I get back at previous page, from my report page; that one results ex
-
Officejet K80 printing black pages
My Officejet K80 was working perfectly for 3 years and two days ago started printing each page solid black within the margins of the printed page. Holding a printed page up to the light shows that the desired printout is there, but the entire page i
-
Hi, I don't use skype official for gettting a virtual number from them. I uses DID exchange service for calling cheap to all over the world because they are [Link to external website redacted.] Hope you'll like it. Abdul [Link to external website re