Arrays :: Flash - Defined Within A Function Discarded At The End Of The Function?
Jul 6, 2011Curious question:Take this function:
function something():Array
{
var ar:Array = [];
[code]....
Curious question:Take this function:
function something():Array
{
var ar:Array = [];
[code]....
I have a situation where, upon loading my swf, I add an event listener to the stage to listen for keyboard commands. One of them is to listen for the spacebar, and if it is pressed, it should play a movie. The problem is, that movie is not loaded until later on, depending other user interactions, therefore, until it is loaded, the reference to it would be undefined.
But if I wait and add the listener for key commands only when the movie is loaded, then I can't utilize the listener for other keyboard commands, like RIGHT or LEFT, which are the buttons which get you to the movie in the first place. Is there a way to add a conditional or something to prevent that code from being executed if the video is not defined yet? Here's my code:
[code]...
In Flash Actionscript 3, if a function is defined in Frame 1 of a flash animation and the animation loops, does it store another version of the function in memory upon each loop.
[Code]...
If so, is it a best practice to check to see if it's the first time the frame has been run, by setting a variable and checking it's existence, or is it a non-issue because the compiler checks to make sure that a function has not already been defined?
[Code]...
I've got a Vector of ViewToActionMap objects, which have following constructor:
public function ViewToActionMap(_forModule:eModule,
_forAction:eViewAction,
_toFunction:Function,
[code].....
Trying to make a grid based question answer game and load variables from a text file using for loops into an array. I wanted to reduce redundant code and use for loops to populate my arrays. The issue I am having is with my arrays being lost/destroyed outside of the loader function.
I understand that if an array is declared inside the function, naturally the array would be destroyed upon exit of the function. However I am declaring the arrays outside of the function so the arrays should remain intact after I exit the function.
BTW - I'm not having an issue with the loading of the data. The data is loading correctly. The array is simply being destroyed after the data has loaded.
//Create the arrays to hold the
//categories, questions, and answers
var categoryArray:Array = new Array();
var quesAnswArray:Array = new Array();
[Code].....
I am trying to add an init() function to a MovieClip, but when I run the function from scene1 the variables that were set in the MovieClip are not defined yet... The MovieClip was dragged to the stage from the library.scene1:
mc.init(null);
MovieClip:
var _default = 5;
[code].....
I have been playing around with combining flash and PHP/Mysql for some time now, mainly sending one flash variable to a PHP file and then retrieving a result and turning it back into a different flash variable. My problem is i've got to the stage where I need to access these variables from other functions. Now I think I need to find some way of defining them outside of the function, maybe using global vars? Well i'm not gonna pretend I know anything about it. The two functions from which I access my PHP variables is as follows:
ActionScript Code:
function btnDown(event:MouseEvent):void {
var variables:URLVariables = new URLVariables();
var varSend:URLRequest = new URLRequest("http://localhost/test.php");
[Code]....
So I need a way to access the phpVar1 variable in a totally seperate function
i've got this mc component i've created and reuse on some sites i've made. It's a real simple shoutbox that grabs info from a database using a php script.What i'd like to do is have this component refresh every 200 frames, which means, grab most current msgs and post them in the database.so for example, i have a movieclip called MC1. there's a function in MC1 that goes like: grabdata = function() {}; this basically calls the php scripts, loads the info, and so on.i wanna call this function from the root or even a parent MC.I have considered using prototypes or a class, but i dont think it's really necessary for something that seems basic enough.
View 1 RepliesI am trying to load external swf's into my main swf through nested movieclips.Its like this: STAGE > contents_mc > loader_mc Also most of the code is from tutorial's out on the net.Content_mc I have the following MC's in content_mc (on 2 separate layers, if you want to know):
- Preloader_text (PText)
- loader_mc (LoaderExt)
[code]...
Problem: I am having a problem in calling the function ClipLoader and loading a clip through the loader_mc MovieClip (the text in Purple). The reason I am using this is eventually I will put in code in contents_mc to load various external swf per conditions i give.
I'm trying to define this function so I can pass the CardButtons sprite to the Add Cards function. It "works" but there's one problem: the CardButtons sprite used in the function is determined by the value of i at the time of the function call (or in other words, the value of i when I click the sprite).
I want the sprite passed to be literally the value of CardButtons[i] at the point when the function was defined.
CardButtons[i].addEventListener(MouseEvent.CLICK, CardFunctions[i]= function(){ AddCards(CardButtons[i],PlayerHand[player-1][PlayerHand[player-1].len gth-1]);});
Is there a way I can do this, or is there a better way to do what I'm trying to do?
I guess for further example:
I want CardFunction[0] to store the AddCards function with the value of CardButtons[0] passed, it should NOT be dependent on the value of i.
I'm trying to have JavaScript call a function from my ActionScript.
ActionScript:
import flash.external.ExternalInterface;
ExternalInterface.addCallback( "playSong", playSong );
function playSong():void {
var _sound:Sound = new Sound();
var _request = new URLRequest("music.mp3");
_sound.load(_request);
_sound.play();
}
JavaScript:
swfobject.embedSWF('[URL]', 'musicplayercontrol1', '1', '1', '9', null, null, {
allowScriptAccess: 'always', wmode: 'transparent' }, { }, function( e ) {
document.getElementById('musicplayercontrol1').playSong();
});
I keep getting a function not defined from firebug. I tried having the song play as soon as the swf load, and that works for sure.
Code:
class className () {
//constructor
function className(targetmc,linkId) {
[code]....
My question is how can I set up an interval when I click on a button that is created from within the class.
I need my function updater to keep repeating untill I clear the interval.The only way I can figure out is to give the full path like this._parent._parent.instanceName.updater inside the setInterval, but although this works I think is just dumb to hardcode the instace name of the class. I could of course try to pass the instance name as a parameter, but I would really love to find out the smart way to do this (by the book).
The following bit of code outputs that 'myRequest' and 'i' are not defined.
Code:
//Load external asset
function loadfail():void
{
[Code].....
after a bit of reading I find that it is because 'myRequest' and 'i' are defined within functions, and so those variables are not available outside those functions. How can I get around this? Make a class?
i am quite newbie towards to actionscript 2.0 cos i am now learning on actionscript 2.0
here is the file attachment for you to check.Greetings.zipOutput cannot be worked.I am hoping to see the exact output:Greeting = Hello!Salutation = undefinedSubject: Brick Oven
I have a main time line and a button defined. Can I define functions in actionscript anywhere and call them from anywhere? For example, if I call a function in main timeline and it's defined in the button, does that work?
View 3 RepliesI create a new MovieClip, call it Somehow, and link it to the name "MyClip", for example.[code]...
They must be MovieClips, because the functions not only response with hello, like in the example.
So I want to create the Clip copies and call the functions in one step. This example is also not working when i put it inside of a onLoad, or onEnterFrame and so on.
I have a class file defined in my package as MyGlobals.as.[code] (I have tried adding/removing "static" and "dynamic" to no effect.)I am trying to call a touch event from the main timeline in this way:myObject.addEventListener(TouchEvent.TOUCH_BEGIN, MyGlobals.myFunctionName);(I have tried removing the class name to no effect.)When I compile I get the error 1046: Type was not found or was not a compile-time constant: TouchEvent. This error occurs on function definitions in the class file.What syntax/concept am I getting wrong? The functions were working fine when I was using constants in the timeline, but I need to be able to reuse these functions over and over again, so I wanted them to be able to take touch event variables so that I didn't have to write a different function for every touch event.I tried googling "error 1046" but I can't find anything useful.
View 3 RepliesI'm currently working with soundmanager2 in an IE/flash context (not html5). The issue is that audio playback of mp3 content does not occur for the following case where the 'onload' callback function is defined as null OR as a function that does almost nothing.
[Code]...
Something like[code]...
Since I have to loop through all of them. I can convert them to an array inside the function, but it would save me 10 lines if I could just enter them as an array in the function parameter (as I have 10 variables 1-10...)
the sort() function for arrays in Flash MX. How efficient is it? I am currently developing a flash application that will need to read in hundreds of records from a database and sort them.speed is crucial. Which is better? to use the built in sort() function or to create my own shell-sort?
View 3 RepliesI'm trying to pass an array of X arrays as parameters to a function such as :
var someArray = [0, 1, 2];
var someOtherArray = [A,B,C];
array = [someArray, someOtherArray,...];
myMC.someFunction(array);
The problem is that the function doesn't see where the 1st array stops, it's like passing a big array such as
myMC.someFunction(someArray,SomeOtherArray, ...) becomes
myMC.someFunction(0,1,2,A,B,C) instead of myMC.someFunction([0,1,2],[A,B,C]);
I even tried to make a string such as str += "[array[0]]"+","+"[array[1]] ..but it still passes everything as one big array....how to pass X arrays to a function??
I have byte array, and I want to write into it a Function object, like the following:
var func:Function = function f(event:Event):void
{
trace('hello');
}
[Code]....
[Code]...
NOTE: The following text is my problem and observations, if you afraid to read it all, my problem is easily guessable within the code go ahead and crack at it without my explanation :-p I'm having some trouble with using hitTest(); with movieclips within arrays. I wanted to build a function that checks the hitTest of Movieclips in arrays because the array is dynamic and it would run more efficient and faster this way.
As you may notice it doesn't check just the movieClip in the array, but a movieclip 2 scopes within it. I feel that this is my problem. I noticed in my debugger that that mc doesn't show up, but i put an onLoad event on it to trace its existence when loaded and it shows up fine. I wonder what I'm doing wrong.
I have to create a function that creates an array of arrays. I have to be able to add elements to the array, delete elements and extract elements? the elements will be arrays. How to I do that, or it is possible?
View 8 RepliesBasically, I have a FLVplayer called vidPlayer and 3 dynamic text fields that put text in when they are clicked. I want to be able to keep the button clicked in the 'over' state, and to do this I believe arrays are needed? Also, an array might be easier, as there is a lot of code to sift through.
Below is the code for the buttons in my flv;
Select all//video player script
function fenwick(event:MouseEvent):void{
vidPlayer.source = "flvs/adver/Fenwick.flv";
}function moneyshopGold(event:MouseEvent):void{
vidPlayer.source = "flvs/adver/MS_Liquid_Gold.flv";
[Code] .....
so I have writing a function that returns objects on the stage and puts them into an array. and the function works fine until i call the function on more than one object name, meaning if im in the root class, and I call this function on object1 lets say it will add all the object one's from the stage, but if i call it on object2 it will throw an error, which makes some sense, i guess it means that it is not adding it to a unique array, but im not sure how to do that. would it be a good idea to maybe make a multidimensional array? if that is the case would it be too slow?
[Code]...
I need to get a grip on arrays and XML data but I'm having trouble understanding how to turn xml data into useful data.I load my XML with this code:
//set values for XML data file
private var XML_URL:String = "http://www.mysite.com/media/locXML.xml";
private var locXML:XML = new XML();[code]....
Error #1034: Type Coercion failed: cannot convert []@1488bac1 to Function.
What I would like to do is omit those two last lines and then add the event listeners in a loop at the end.
I'm using this code to call a actionscript 3 function through javascript
[URL}
and I want to call the acrionscript 3 function from a javascript function, but not on a button action.
actionscript code:
//call to javascript
ExternalInterface.call("sendToJavaScript");
//call from javascript
[Code]....
I have an AS3 function that loads and audio file and then plays it. I have the pre-loader for the first audio file working - now I need to run the pre-load function before the 2nd audio file starts.
myMusic.addEventListener(ProgressEvent.PROGRESS, onLoadProgress2, false,0, true);
myMusic.addEventListener(Event.COMPLETE, playMusicNow, false, 0,true);
myMusic.load(soundFile, myContext); //This code works
[code].....
I have a class Debug with a function called trace inside it which puts a TextField on the stage and outputs the text. Now I am trying to get the Debug.trace() function to do a "normal" debug trace as well from within side itself. of course this causes a recursive loop. I am trying to figure out how I can access the top level separately. I tried using namespaces such as AS3::trace but to no luck.
I know a solution is to rename my function to stop the conflict, but I would like that to be a last resort. It is being used in quite alot of places throughout my entire code so replacing it everywhere is going to be a ballache.