Actionscript 3 :: Re-defining Named Functions At Runtime?
Mar 26, 2011
What I am trying to do is kind of odd, but I am wondering if anyone can come up with a clever way to do what I want to do. Basically, I want to re-define a named function at runtime. I can do this with anonymous functions, but I can't figure out a way to do it for named functions. I want to do this so that I can implement a "spy" functionality on an object for a testing framework (a port of Jasmine to Flex).
Take, for instance, this class:
public class TestClass
{
public var anonymous:Function = function():void {
trace("original anonymous");
[Code].....
Can anyone more clever than I come up with a way to hack this? Can the bytecode be hijacked? Something?
if defining variable types in function parameters gives any speed boost.
e.g
ActionScript Code: function DoIt(param1,param2,param3):void {
[Code]....
is there any performance difference between above functions. in theory compiler should be able to manage memory more efficiently when knowing what data to expect, but is it so in flash
I would like to know if this is actually possible in AS3. I'm not really fluent in Java-style programming, but very used to C++'s .cpp and .h file system. Right now my functions are defined where my class is defined, so as you can imagine, my classes look incredibly untidy and disorganized.
I�m trying to use Listeners to capture the MouseUp event based on Helen Triolo�s sample at [URL]I reused her code and loaded the listener�s array (with MC names that will listen to the MU event) from a textfile.My problem is that I don�t have these MCs on the _root. They�re located deep in the MC hierarchy, this way: MCComponent-->MC1-->MC2-->MCs I want to address for listening (I have about 250 MCs in this level of depth which I want to to address for listening)So, when defining the MouseUp function for each MC to respond to, I couldn�t address the MCs. I tried in different ways without any result.
This is the code:
// set up responders for each listener // listeners is the Array with MC names which I loaded from // the textfile for (var i in listeners) {
[code].....
Is there any way of making this work? Is there something missing in this code ? Note: I cannot put these MCs on the root because of other functionalities that they need to accomplish...By the way..., what about RollOver and RollOut ? Can they be captured too ? I�ve read about capturing MouseUp, Move and Down but not Rollovers...
I want to define functions to move a movie clip around the stage, my code works when i define it STRAIGHT to the movie, but when i define it as functions it doesn't.
So I've been trying to make dynamically named functions, and while it works, I've run into a couple of problems.
ActionScript Code: var uServer:String = "irc.epic-chat.net" var lol:String = "lolz" var num:Number = 3
[Code].....
If I had something like that ^ what could I add to func to distinguish between whether it is being called by lolz0, lolz1, or lolz2? I was thinking whether there was something like .name I could use, but I couldn't come up with anything.
I am dynamically creating movie clips using something similar to[code]...
This works fine for creating and loading movie clips, but at the same time I'd like to apply functions to these clips as they're created. For example, I'd like to apply a distinctive onMouseDown or onRollOver behavior to each ie ...
In my application I declare a class variable as Function and set it during runtime as I instantiate the class. But how do I call this function? Looked in the manual but my brains are not working properly at the moment.
I am writing some code that needs to be very efficient, yet flexible. This is in a class and when the class gets initialized a function is setup. I want this function to run straight through without doing any time-consuming things such as calling other functions or routines, or doing any if/else logic/branching. Now I know that you can setup a function at anytime during runtime such as:
Code: var myFunction:Function = function() {trace('HELLO!')}
But what I am trying to do is to try and append code to a function based on logic, yet I don't want the function to be deciding this logic when it is running as it will only need deciding when the function is created.... imagine if it were a string it would be something like myFunction+="do somethingelse;" which would be the same as having initially setup myFunction as such:
Code: var myFunction = function() {do something; do somethingelse;}
With this I seem to be having no luck Here's an example where I setup the most compact/efficient function at runtime depending on what I want the function to do. Now this was fairly simple because when we create the function there are only a few possible variations, but I need someway of doing a function+= as my real code has quite a few variations and it would be a nightmare have a zillion if/else branches. REMEMBER I do not want any logic/decisions in the function itself as it to be the most efficient the function must be as compact as possible and run straight-through.
Code: var dynamicFunction:Function; // // Setup the dynamic function & call it // In this example outputs "Hello Jim" & "Goodbye Jim" dynamicFunction = CrapSetupRoutine(true, true, "Jim");
[code]....
P.S. I knew the += would never work as this is a function and not a string. But at least if you think of the function as a string you'll get what I'm trying to do....
here is my new code that works for PART of my movie. i have two dynamic text boxes, one named "item" and one named "ssnumber" ssnumberNode works fine but itemNode does not. i bolded the parts that i think are relevant to the problems
I've seen the Loom project, but are there any alternatives that are more mature (and actively developed)? I am looking for something that would allow load-time weaving of pointcuts into existing binary code at runtime with the AVM2 runtime.
I've been into coding for about 5 years now, but I'm a recent convert to Flash development. One of the questions I have at the moment is, considering that SWF files can be run by either Adobe Flash Player OR Adobe AIR, what's the real difference between the two runtime environments? What API's and Objects exist in one environment, but not the other?
Basically what I'm more or less trying to establish is, when would I want to develop an SWF for AIR, and when would I want to develop for Flash Player, considering that Flash Player can also execute locally (providing support for creating "desktop applications")
Whenever I link a set of movieclips together with the bone tool which are inside a containing movieclip, and also set the type to "runtime" instead of "authortime", I get this error when published.
"Runtime symbols with skewed matrices should be wrapped in a movie clip" What does it mean? I need the type to be set to runtime so I can use scripting with it..
I am trying to get a dynamic text box embedded in a button to populate on (XML) load but am having trouble with the path. The text boxes not embedded populate just fine. I have attached my FLA and my XML is below.
I posted a problem recently and I think I was asking too much too soon, I apoligise for that one. I want to try again with my problem. Basically I am making an interactive circuit builder in flash mx for 8-10 year olds (does anyone remember crocodile clips?).
I have a series of calculations i'm doing over a bunch of objects stored in a array. Each function is pretty CPU demanding but if you only run one function, it just works fine.
I've got a project thats getting a bit big, so Im taking the actionscript out into separate as files. I want all the basic functions to be in BasicFunctions.as and the make a library for more specific functions. I find that a lot of people use the import statement but I cant get that to work with a simple Hello World trace, yet the include statement works fine (see attached). I understand that import/include work differently, but which is the better method? If import, then is that heavier to work with. Any rate, what's the best way to organise code when it gets to the 1000+ lines?
I'm trying to find a way to have global functions in my as project, similar to how flash does with stuff like the util functions (describeType()...), where you can just call the function wherever you need it. For example:
[Code]...
So when I call Test(), it prints out "hello world" fine. My problem comes in that I can't change the name of the Test function, and I can't add any other functions without compiler errors. Is it possible to have a load of global functions in one file, or do I have to split them up into separate files like in the example? Also, I know that I can make a Global class and call static functions like Code: Global.doSomething() but I'd like to know if there's a way to do it as flash does it (describeType(), getDefinitionByName(), etc), or rather, how does flash do it?
I have one function that puts text in a text field and makes a button goto a url onRelease.The code is like this:
Code: item.onRelease = function() { myButton.onRelease = function() { getURL("http://google.com", "_blank"); } talk = this.txt; } the only problem is that the button doesn't work onRelease. i think that it is because there are too many functions there, but at the same time,
I am trying to define a CSS style dynamically. how to get around hard-coding the values this way:
code: var styles:TextField.StyleSheet = new TextField.StyleSheet(); styles.setStyle("mainBody", {color:'0xff0000, fontSize:12});
I tried something like this, but it isn't working:
code: var styles:TextField.StyleSheet = new TextField.StyleSheet(); styles.setStyle("mainBody", {color:colorVariableFromParentMovie, fontSize:sizeVariableFromParentMovie});
I am using a movie clip with graphics as a cursor.
However, it appears that the actual 'hit' area of the movie clip is related to specifically the normal arrow cursor.
I would like to be able to define an area of the graphic, in this case it's a hand holding a billy club so I'd like just the tip of the billy club the 'hit area.'
pretty much just saying there is 10 elements in it. I define each function as "land", for example. Then in the same function I redefine a random element as "water".
(It is a bit more complex, this is simplified!)
Upon executing this I get the error:
ActionScript Code: TypeError: Error #1010: A term is undefined and has no properties.
if I put the second bit in a new function (the random water part), there is no problems and it executes perfectly. Obviously I cant define an element twice in the same function.
this is my first attempt at defining a function all by myself and surprise it don't work! I'm sure you can see from below what I'm trying to create.
[Code]...
Basically dependent on the hour the text displays a relevent welcome message. Once I cracked this I was going to use the same code to alter an animaton of a scene to reflect the time of day.
var cColor1:Color = new Color(mcBut1.mcFill); var cColor2:Color = new Color(mcBut2.mcFill); var cColor3:Color = new Color(mcBut3.mcFill); var cColor4:Color = new Color(mcBut4.mcFill); var cColor5:Color = new Color(mcBut5.mcFill);
What I'd like to do is write a loop to handle all that code in less code. So, how do I define variables using variables?
Something like:
for (var i:Number = 1; i < 6, i++) { var cColor+i = new Color(eval("mcBut"+i).mcFill); }
I have drawn a rectangle area in which I want to drag a copy of a MC instance from outside the rectangle.
1. I want to be able to define the rectangle as a boundary so that I can drag and drop a copy of the instance from outside the rectangle to inside the rectangle. If the MC instance is dropped outside the rectangle then the MC instance snaps back to it's original position.
2. Once the MC instance has been dragged and dropped inside the rectangle it can be dragged and moved around BUT only inside the rectangle and not outside it.
using the MovieClipLoader function to load in several images into various actionscript defined movieclips. These movie clips, with images loaded into them, are going to have onRelease functions associated with them which will load in a larger version of the image already loaded. As you can picture, there are a series of thumbnails, and each thumbnail needs to be clickable and load a larger version of itself into an empty clip. However, I can't seem to define variables inside of the MovieClipLoader object as it's not technically a movie clip?
How might I know which larger file to load when one of the thumbnails is clicked? All the files are named all sorts of things, aren't in any particular order (user defined from a drag-n-drog UI)... I thought I was on the right track, until I realized I couldn't define variables within the empty clip holding the thumbnails..