ActionScript 3.0 :: Keeping Same Instance Name But Changing Object
Apr 30, 2011
I've got a frame of code with two boxes on the stage. If you click on of them, it runs this code:
ActionScript Code:
charSelect=1;
And if you click on the other box it runs this code:
ActionScript Code:
charSelect=2;
Now, on my main frame of code, I've got an init() function which runs all the initialise commands. It includes this:
ActionScript Code:
function init() //Loads assets to the stage and starts animations {
if (charSelect == 1) {
character.addChild(character);
} if (charSelect == 2) {
characterFemale.addChild(character);
}}
These functions basically let you select which character is loaded to the stage with the instance name 'character'. All my control code is written in relation to the instance name 'character'. However, after I've clicked the box which selects which character to load to the screen, I get this error message:
ActionScript Code:
Scene 1, Layer 'Layer 1', Frame 2, Line 155 1061: Call to a possibly undefined method addChild through a reference with static type Class.
Does creating a new instance of an Object that uses an identical name to an older instance, delete the previous instance? Or should the original instance be deleted first? The code uses a ridiculous amount of XML vars. Isn't it less memory intensive to parse the XML and save the properties to an Object, and then delete the XML Object, rather than keep the XML Object around and reference it's child nodes directly? Is it better form to break up a huge XML file (>600lines/3200vars) into smaller chunks?
i am doing a mario game with flash, as3. i want to mario stay above box when jump above it or i dont want mario to pass through box while walking. mario should crash box like wall.
I'm making this banner, or FMA if you rather call it that, for a company (school assignment). I have some text fading in and out displaying the message. But I want an interactive FMA.I want to make some buttons, and when you go mouse-over on them, I want a picture to be displayed (different image for each button), WHILE the animation keeps going. Thats not the tough part.However, when the animation repeats (starts from the beginning), and if I'm holding the cursor over the button connected to the picture, the picture disappears and I have to go over the button again. [code]
Let's say I have an object, and I use a motion tween to animate it around. Great. Now, I want that object to stay at the final location while other stuff happens on the stage. I can't figure out an efficient way to do this. You can't copy individual frames of a tween, and copying and pasting the whole tween and breaking it up into individual frames and then removing all but the last frame is a bit... time-consuming.how I might be going about using tweens wrong? I feel like I'm just not doing things the way it was designed.
In my attempt to keep a movieclip on the bottom, I used this code: ActionScript Code:setChildIndex(movieclip,0);However, whenever I play an animation over it that is NOT in a movieclip, it will always cover the animation.For example, I have a shape tween that is not a movieclip. Whenever I lay this movieclip over it with the above code, it always covers the non-movie clip. Is there any way to prevent this?
I'm trying to write a function that keeps a running count whenever a button is clicked - and then writes the count to a Shared Object cookie. Here's the code:
Code: function counterVar() { var elemSharedObject:SharedObject = SharedObject.getLocal("elementChoices", "/");
[Code]....
Everytime it runs the count gets reset to "1", endlessly.
I am wrapping my brain around OOP in AS2. I am making two posts on two different subjects. My question here is: when should I use local instance variables, and when should I attach new properties to the instance object? (Feel free to correct my terminology.) Let's say I have a class for a scrolling background, which scrolls when I mouse over its edge. I want to put these values somewhere:
1) How wide is the border in which a mouseOver makes it scroll? This is basically a semi-constant I set it up once and keep it the same, unless the user changes it in an options menu to make the border wider or narrower. Call this scrollBorderWidth.
2) How fast is the background scrolling now? I want to track this so I can smoothly change the scroll speed over several frames. This is often changed. Call this scrollSpeed.
It seems I have two ways I can store and access these values and darned if I know which is better practice. METHOD A: Make them local variables in the class, so the scrolling background instance has them as local vars. I set them up thusly:
i am creating a list of buttons with an attachMovie. the AS is :
//as var i = -1; while(++i<userlist.length){ var user = userlist[i];
[Code].....
okay the problem is this: then i assign an on click function to every button right in the while loop that uses the data parameter of the "ob" object and when i play the movie the data parameter is always the parameter of the last object created for all the buttons. I know why this is happening- it overWrites the old "ob" with the new with every itteration of the loop.
But how would i go differently about creating an individual "ob" for each button created and still be able to have a function with a data parameter like this.onRelease.userClicked(data)?
I have a FLA in which I've added three movie clips, each with a unique name. I've set the MC name through the properties panel as well as giving the MC a name when converting it from a image to a MovieClip (by clicking F8).
When I run the swf and output the names of the children in the swf, I find that the name of one of the MovieClips changes, for example from myFirst_MC to instance8.
To output the MovieClip names I loop through all the children of the swf and output the name like this:
for(var i:uint=0;i<numChildren;i++){ var display:DisplayObject = getChildAt(i); trace( display.name ); }
Why does the instance name of a MC change? And how can I stop this from happening?
I'm confused about changing an instance's animation. I'm working on a really simple game to learn AS3 and I've got the controls down, but don't know how to change the animation of the player instance. I have movieclips for different animations, which I assume I should, but don't know how to switch the instance's appearance between them.
im with a kind of a deal here... i havent wrote any code on this subject yet, and im not quite asking for the exact code of it, Ok my idea is this, i wanna create some sort of a timed slide show using the values of an array
When you're in the flash application, you can watch the properties of an instance. In the properties tab, you can also click "Swap", this will ask you about which instance you would like to use. The original object will now change into another movieclip. So, how do I do this with Action Script?
I have a variable called "framenumber" and a movieclip(drawing) with six frames. Each frame of the movieclip has another drawing in it.In the main movie, this movieclip exists over several frames and keyframes. I even do a motion tween with the clip. Now what I want to do, is change the value of framenumber (for example 2) and then do a drawing.gotoandstop(framenumber). So then, the drawing in frame 2 of the movieclip should be shown. But here comes the problem. If I do that,the drawing (in frame 2 of the movieclip) only appears in the frame of the main movie where I put the drawing.gotoandstop(framenumber) command. But in the other frames of the main movie, the initial drawing is kept. How can I let the drawing change everywhere where the movieclip exists? So actually I want to know how I can change every instance of a movieclip, no matter where it is in the movie. Or maybe there's a way to change the (library) symbol itself, so that every instance of it changes along with the library symbol?
using the same event for 8 buttons. i have instance names b1,b2,b3..b8 im loading external swf with replacing instance names p1.swf... that code is in the hovernewStr= StringUtil.replace(evt.target.name, "b", "");when hover i get external swf name myswf="p"+newStr+".swf";there is no problems here. but i have problem with click function. my instance name b1 is changing by flash with instance19.
i'm playing around with Senocular's brilliant transform tool. Here's the code that I'm having issues with - it targets the instance name, which is great and works perfectly.
Here's the issue. When I have an MC placed on the stage with the instance name of 'pasteBoard' the above code (which tells the transform tool what to transform), works just great. However, when I place the MC on the stage with AS and name it, the transform tool can't find it . Here is the code I'm using to place the MC:
ActionScript Code: var pasteBoard:_pasteBoard = new _pasteBoard(); addChild(pasteBoard); pasteBoard.name = 'pasteBoard'; pasteBoard.x=128.00; pasteBoard.y=300.00;
Now, surely this should work as I'm even giving it an instance name? But it does not, it does not work even with no instance name, or when the class object name is different than the instance name. Weird huh? Surely this should work just fine as I'm doing exactly the same thing as placing it on the main timeline, just doing it with code. But the transform tool, referenced by the code at the top of this post, can't find pasteBoard.
Do I need to alter the code at the top to find pasteBoard by class instance? how would I do that?
I've created a graphic and have multiple instances of the graphic on the stage. I've recently decided to change the graphic to a movieClip. However, changing the original clip's type to movieClip doesn't apply the change to all instances that I've already placed on the stage; they're still all graphics.
The only way I've been able to fix it is by manually selecting each one and changing their instance behavior from 'graphic' to 'movieclip'. Is there a faster way to do this, be it a command or an actionscript code? Anything that doesn't require me manually changing each instance would be a huge time saver.
In the following code I would like to be able to change which object the code affects depending on which parameter name is passed to it:
Code: EventCentral.getInstance().addEventListener(ProjectEvent.SOME_EVENT, handleSomeEvent); function handleSomeEvent($event:ProjectEvent):void
[Code].....
I could write it all out with ifs and else ifs for each parameter but this code is already part of quite a large structure and it would be more elegant to be able to do it with re-usable code.
I'm trying to do it is particularly idiomatic to actionscript anyway
I'm writing a flash movie that creates a few boxes displaying an image that you can flying around the screen with a sort of gravity effect eventually slowing them down. I've managed to do what I thought would be the hard part... I've made a movie clip in which theres a button (to detect the clicks and drags) which contains a graphic (a .png file). After adding some nice bits of code, I can now stick loads of instances of the movie clip on the main stage and then start flinging them round.
Now what I want to do next is change the image displayed on the button in each instance of the movie. Logically, something like : myinstanceofmovie.nameofbutton.mygraphic="name_of_ other_image.png" ...or something...
I have a mc with simple btns inside. the mc is on every frame except one,in which I swapped a similar mc (different colors).I have tried leaving the instance name for the mc the same and also changing the instance name to something else but anytime I navigate to that frame, the buttons quit working.I have tried changing both the buttons and mc instance names to no avail.This is on my main timeline:
So I have a bunch of objects (thumbnails) and I want every photo to be displayed on top of other photos once it's clicked. So what should I put inside the click handler inside the photo object?
I'm coming to AS3 from Director Lingo. In Lingo, a 'sprite' is vaguely equivalent to an object in AS3 and a 'cast-member' roughly corresponds to an AS3 library symbol. In Lingo I make a lot of use of lines likesprite("image").member = 25which changes on the fly the cast-member associated with a sprite, giving an instant image change when the user drags a dial, for example. This is particularly useful because the cast members in Lingo can be addressed by their sequence numbers as well as their names (giving a sort of implicit array addressing).In AS3 I can't see how to replace an image object with another image (not just a simple variation of the original). And even if I could do that, I can't see how to get the pseudo array addressing facility which I need to allow me to choose by code what image from perhaps several hundred will do the replacing.I guess what I'm asking for is maybe contrary to simple OOP.
Is there any way to do this? Say I have a global variable called yarr: _global.yarr = textbox; and I want to change that in to a string, I want to change it to "textbox" instead of textbox. Is there any way to do that?
I've got another simple question. I have a mc who's bitmap that is associated with him I want to change.
[Code]...
When BlankClip is first created, I want to tell it to either have the same image as Block_0 or Block_1. Looking it up online, it seems like I have to use BitmapData somehow, but I'm really unfamiliar with things...I've been working on this same code for about 2 hours...
I need to find an instance of a movieclip that is on my flash file. It is really big and uses a lot of memory. It says on the number of times used that there is one instance of the object on the flash file, but I can't find it. I thought I deleted them all but there must be one left. How do I go about finding it? It's a really large flash file with many layers, and I don't want to just delete the library file. Is there any way I can find where the object is placed in my file?