Actionscript 3 :: Instance An Object With The Name Of The Value Of Type
Sep 30, 2010
I have a variable named "type". And I want to instance an object with the name of the value of type. Here is an example: var myObjectName = "ball"; var object = new ball(); //Except I want to use the value of myObjectName. I believe this used to be easy with AS2 when using _global, but I'm not sure how to do it in AS3?
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?
1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.geom:Rectangle.I got this error coming from the bold words when I tried to use this AS2 code in my AS3 stage. I'm currently trying to convent an AS2 printing of DataGrid to AS3. [code].....
I'm in the beginning stages of trying to understand AS3.Flash is outputting these two errors:1118: Implicit coercion of a value with static type Object to a possibly unrelated type Function.1120: Access of undefined property event_obj.
I keep getting the following error msg below I would be very happy if some knows the solution to this: Error Msg: 1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.events:Event Object A dispatches Event as:
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 have a site I'm maintaining that consists of multiple pages that tween in their menus on a single monstrous AS2 timeline. I've broken the timeline into their own swfs that I want to now network with a swf loader and AS3 code. I've kept the timeline tween-ins, after stripping the AS2 code off all buttons. I put the AS3 code on the last frame of the timeline in an .as layer.So on the main page, on the last frame of the animation in an ActionScript layer, I put the following:
Code: var defaultSwf:URLRequest=new URLRequest("defaultHeadShot.swf"); var swfLoader:Loader=new Loader(); swfLoader.load(defaultSWF); addChild(swfLoader);
[code]....
I keep getting the Type 1009 error. I'm trying not to have to rebuild the graphics from the ground up, which it doesn't seem like I will have to do. I think it's probably got something to do with putting all the code at then end of these complex tweening timelines, and that a line of code that offers a scoping cue might be the answer, but I'm stumped.
The title might be a little misleading. Look at my code and I will explain
public static function loadTile(tileDir:String = "empty"):void { if(tileDir != "empty") { tPoint = new Point(0,0); tRect = new Rectangle(0,0,30,30);
[Code]...
I am trying to do tiling with sprites. I want my tiles to be interactive, so that is why I am using the sprite object instead of using regular bitMaps to represent my tiles. You might be wondering why I wouldnt just use graphics.beginBitmapFill(tImage); and graphics.drawRect(0, 0,tWidth ,tHeight ); to pick out the tiles I want to use. Well reason being is because it turns out that drawRect() first and second parameters actually alter the location of where the actual sprite sits at.
So if I set the x and y properties of the sprite to x = 20, and y = 20. then I set my drawRect(20,20). it actually adds an extra 20 pixels to my x and y coords of my sprite. And I know the reason why, I just need to know a better way.
I narrowed the causes of an AS3 compiler error 1119 down to code that looks similar to this:
var test_inst:Number = 2.953; trace(test_inst); trace(test_inst.constructor);
I get the error "1119: Access of possibly undefined property constructor through a reference with static type Number." Now if I omit the variable's type, I don't get that error:
[Code]...
So what's the deal? I like explicitly typing variables, so is there any way to solve this error other than not providing the variable's type?
I have a class with constructor and overloaded methods in it. When i try to import that class using blazeds i get an error saying [RPC Fault faultString="Unable to create a new instance of type 'some class'." faultCode="Server.ResourceUnavailable" faultDetail="Types cannot be instantiated without a public, no arguments constructor."] How to import class having overloaded methods using blazeds
I'm coding a really simple 2D platforming game in Flash using AS3. I'd like to define two different types of terrain surfaces that the player can walk on based on classic platforming elements. Type1: the player can walk on, and if the player jumps, they will hit their head on it and bounce back to the ground. Type2: the player can also walk on, but if the player jumps and hits their head, they will simply pass through the surface and not bounce back to the ground.
I am using hitTestPoint to resolve collisions for this. My question is: What would be the best method to test for what TYPE of ground I am colliding with? Each ground type has it's own Class associated with it in my Flash IDE and all the different terrain surface types are in the same movie clip on the stage.
Currently I'm testing to see if it hit one type of ground surface, then i'm testing if it hit the other, and then based on those results, I process what I want to happen. This seems to work okay right now, but I'm imagining that I may want to create more than 2 types of ground to collide with. For example, moving platforms. It seems like the code will start to get complex
Here's the example: var cartesian:CartesianChart = new CartesianChart(); cartesian.width = 100; var column:ColumnChart = new ColumnChart(); column = cartesian as ColumnChart; Why does this not work? "column" ends up null. ColumnChart is a derived class of CartesianChart, so I would have thought I'd end up with a ColumnChart with a width of 100.
I want to do something like this in Actionscript 3:
if(variable is Object) ...; else ...;
Where variable could be a String(), Number(), Array(), Object()...Currently the above check returns true for all of these types, which makes sense. I only want it to return true for objects made with new Object(), however.
I want to find a way to only allow certain objects into an array that have a certain word in thier class name. Or at least find the optimal way of doing something like this. Heres the details. I have an Array that stores all the objects dropped into a cart.
function addProductToArray (e:MouseEvent):void{ currMC = (e.target as MovieClip); myCart.itemsInCart.push(currMC); trace(myCart.itemsInCart);}
I'm trying to use addChild on a movie clip but can't as Flash gives me this error:Error #2007: Parameter child must be non-nullGreat. Okay.The movie clip into which I'm trying to add a child is set to null by default. How do I unnull it? Just what am I not understanding?
-= Lets say I have two swfs: 'parent.swf' and 'child.swf' AND MyCustomObject.as that extends MovieClip-= In child.swf I have a MovieClip physically placed on stage (not using adddChild). Lets call it "ball_mc"-= child.swf gets loaded into parent.swfWhat I want:-= once child.swf is loaded I want to change ball_mc from a ball_mc:MovieClip to all_mc:MyCustomObject-= Then I want to be able to call ball_mc.init() (init() would be a public function in MyCustomObject.as)Why I want to do this:-= I dont want to import MyCustomObject.as directly into the child.swf. This is because there will be LOTS of child.swfs (child1.swf - childN.swf) If the .as is imported directly into each of these AND the MyCustomObject.as changes I have to re-publish ALL the child.swfs so that they publish with the new code... Right.MAIN QUESTIONs:-= whats the best way to go about doing this?? I just want to be able to change the MyCustomObject.as and have the effects show up on all the child.swfs (but not have to re-publish them all
I'm trying to find information in how or if it it possible to declare a Variable Type that can accomodate 1 of 2 different Types In this particular case I'd like to set a Variable able to accept either Integrals or Strings I know i Can use a wildcard as below and it works, but it also allows for any other type to be added.
private var _destination:*;
My first Thought was something like this
private var _destination:String^int; private var _destination:String|int;
I am trying to save a Sprite object as a file on the device I'm working on and it seems to work. the problem I'm having is reading the saved file back and placing it back on stage as a sprite. Below is the code I have so far, could someone tell me what it is I'm doing wrong? I have a suspicion that the saved isn't what I expect it to be since the file sizes have been under a kilobyte.
public function save_album(e:Event):void { var outFile:File = File.documentsDirectory; // dest folder is desktop[code]....
I want to find out which type an object has. Therefore I thought of the 'switch' statement, but how would you do that? The following code does not work, but you will get the point of what I want to do.
Code: switch (object) { case is String: trace("string"); case is Array: trace("array"); [Code] ....