Actionscript 3 :: Use AirSWF.installApplication() After URLLoader's Callback
Apr 7, 2011
I'm trying to use a variation of the Flash Badge to install an AIR application. Here's what needs to happen:
User clicks "download" Send a request using URLRequest/URLLoader to my web service to retrieve some information Pass that information into the AIR app using the install/launch arguments
The problem I'm having is getting the airSWF to do anything after URLLoader is done. Since airSWF.installApplication() must be called within the handler of a user-generated event, it doesn't do anything when it's inside the URLLoader Complete event, and the fact that the original event was user generated doesn't seem to pass through the chain of events.
I am integrating a flash module with Drupal using XMLRPC module. I am currently calling a node.save on Drupal(which creates a page in drupal), using Actionscript 2.0. On a flash button click, I am currently calling the node.save function. But ideally, I would like the function to be called first and only after the success of node.save, forward to the confirmation url. Right now, I am being forwarded to the page even without node.save being completed. I then have to refresh the page in order to see the results.
I am trying to write an IF Else statement that will check to see if a movieclip on the stage has an external SWF loaded in it that was loaded using the loadMovie command. Does the loadMovie command or the internal movieclip object have any kind of a built in function that will return a value if it has an external SWF loaded in it?
i made an example so i can explein the prob better.[code]I am making a class and if have another build in object in it. I what to add a callback to it but the inheritance is not right. I know how the set up inheritance
1) subClass.prototype.__proto__ = superClass.prototype; 2) subClass.prototype. = new superClass;
but its all messed up in my head so I was hoping someone could point me in the right direction on how to get the callback to work with out messing up the LoadVars class too much
I have a Javascript API, which should be usable with GWT and Flex. Using the FABridge it is really easy to call Javascript methods from AS3 and vice versa. But when I try to register a callback to an AS3 method in my Javascript API I get stuck. Here is a short code sample:
I am pretty new to flex, so forgive me if this is an obvious question.Is there a way to open the Security.showSettings (flash.system.Security) with a callback? or at least to detect if it is currently open or not? My flex application is used for streaming audio, and is normally controlled by javascript, so I keep it hidden for normal use (via absolute positioning it off the page).
When I need microphone access I need to make the flash settings dialog visible, which works fine, I move it into view and open the dialog. When the user closes it, I need to move it back off the screen so they don't see an empty flex app sitting there after they change their settings.
I'm making a callback from javascript to a method on my swf. It works in Firefox with no problems, but in chrome the second parameter that's passed is always received as null? I've debugged my javascript and found that everything is working fine and the two values that are passed to the swf are correct at the point where the callback to the swf is made. At first i thought this might be a cross domain issue, but have ruled that out as if it were the case then the method on swf would just not be called at all. The second value is a binary string representation of an image and the length of the string that is passed is 101601, so i'm wondering whether there's possibly a limitation on the amount of data that can be passed? The first parameter is a much smaller string representing the file type and this always gets received successfully.
I'm trying to call a function in my ActionScript from my JavaScript, I've managed to successfully do this with another flash file but in the current one it's failing for some reason. I'm using jQuery SWFEmbed, this is my JS code:[code]The ExternalInterface.call work, and the trace outputs true, I have no idea what's going on.If you could also tell me how I can pass parameters to a ExternalInterface callback.
public function callFromJavaScript():String { test.label='dfdsfsdf'; return "1"; } public function init():void {
[Code]...
I have no clue wich one are crossbrowser compatible (cant install IE to test out)I have tried multiple but i cant get them to work(in any browser), im probably using the wrong id, ive been trial & erroring for a couple of hours but i don't have anything working.(i heard there was a problem with ExternalInterface.addCallback on a local file system?, should i upload the swf? < is the flex code right& problem = javascript/html side?)
What I get is that you can pass a function to another function as an argument so that the function that you pass to can "call back" that particular function.
All good. However, I'm unclear about a couple things: Why exactly is this beneficial? is this the same thing that the addListenerEvent method does when you pass it a function as an argument for when the event fires?
There are several built-in callback functions in Flash, all of them very useful because they are monitoring events and immediately execute actions. They made us economy in code writings. Unfortunately, there's not enough callback functions that fulfill our particular requirements. For example, there's not such a MovieClip.onFrameReached(n) function, that makes something when the movie clip reaches the frame number n. I must appeal to setInterval function to monitor when the movie clip reach the frame n. I try to avoid using that because I believe it is resource consuming. In ActionScript 2.0, can you create your own callback functions or methods? think about what useful a function I described would be when you work with external swf's in order to synchronize it with other objects.
I have a Flash movie embeded with swfobject in a html container. Through ExternalInterface I have registered a javascript function to fire callback to my flash app.
I created an image uploader for an app I am working on. I first used php for the server side script, and everything worked fine. I found out afterwards I had to use .net, so I created new serverside scripts. The problem I am having is that my event.COMPLETE listener is never firing. I can receive data back using a DATAEVENT listener, but then it stops at this error: Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.
Here is how I am sending my file. var fileRefReq:URLRequest = new URLRequest(FILE_UPLOAD_TEMP); var fileReqVars:URLVariables = new URLVariables(); fileReqVars.subdir = "Temp"; fileRefReq.data = fileReqVars; fileRefReq.method = URLRequestMethod.POST; fileRef.upload(fileRefReq);
The file definitely gets uploaded to the first TEMP directory, but then it breaks with the above error.
myFunc(tracer); function tracer(message:String):void{ trace(message);[code]........
Now, this works fine. But how can the function myFunc know, if the given callback function accepts the correct number and type of arguments in its signature?I want to avoid that I call something like this somewhere in my code:
myFunc(tracer2); function tracer2():void{ trace("done");[code]..........
Is there a way to do something like this, in order to use compiler warnings/error messages and thus avoid exceptions at runtime?
// Won't work :-(
function myFunc(callback(message:String):Function):{ callback("Hello"); }
Basically, I have some functions in my as file. Some of them play with a mc instance. The instance is not available when calling the function that uses it as callback.
AS function B(){ ExternalInterface.call('console.log','ok')//OK!!! } //italy is a MovieClip on the Main timeline function A(){ B(); ExternalInterface.call('console.log',italy)//Error! } ExternalInterface.addCallback('test',A);
JS $('flash').test();//flash is my html swf object
The error I get trying to reference italy from A (only) whem called from javascript: Uncaught exception: Error in Actionscript. Basically, the italy movieclip is available through the AS functions. But it isn't available if I call an AS function from javascript. As you can see though, I see B from A. It's only Italy that I can't see. why?
I have been at it for two days now and have not been able to resolve this issue. I am trying to call an AS3 function from JavaScript via ExternalInterface API which is simply not working at all. If I to call a JavaScript function form html loaded swf, it works beautifully.[code]
In our app, I am periodically noticing that a particular event handler is not firing. 99% of the time, it works fine, but, every so often, it just dies. How can I find out whats happening? Is the DispatchEvent() not happening/working somehow? Is my listener still listening? Did something else catch the event, and not pass it along so that the 'right' listener can get to it ?
Here's a little bit of the code...
Thats a somewhat pruned down version of what the real code is, but I don't think I trimmed out anything important. The key, as I see it is that we fire up the params dialog, then start to listen for the closed event. Then, we show the param dialogs close function. What happens when it fails is that the trace message "caught close event.." is never generated, and, consequently, the closeHandler is not getting called at all.
I'm trying to get javascript to talk to flash, but I haven't been able to get it to work.I've gotten flash to talk to javascript, but not the other way around. It seems as thought flash isn't listening to the javascript, or I'm doing something wrongPart of the AS3 to initially call the js:
I have been experimenting with supplying better debugging information when an error happens in asynchronous code in AS3.
As an example of the poor error reporting be default, take the case where I force a null pointer in a Timer callback (github gist), I get the following stacktrace back on the console:
TypeError: Error #1009: Cannot access a property or method of a null object reference. at Function/<anonymous>()[/[path-to-source-file]/TestClass.as:14] at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick()
This tells me very little about how the timer callback actually links to my code.
The question is: How can I get information about what code created the callback?
How do I keep the cycles active, and also call a function at the end of each cycle/tween? Right now I can remove the soundHammer call back and the tween will continue to cycle, and if I remove the cycle soundHammer is called properly, but obviously it doesn't cycle anymore.
Im trying to load some data, but I want to outsource the job of data loading to different classes.lets say XMLLoader class will get the url and return an xml file. The problem now is that such procedures are asynchronous, the class has to wait for XML to load and then call back the caller class and return the xml data.One way of doing this, is returning the data with a custom event. once its loaded then dispatch this event with the data in. However, I was wondering, if there is a way to do it with some sort of asynch call, meaning the caller class sends the request, then waits for a response.is such a thing possible? is there a better way or do I need to stick to my custom events?
Lets say I add a callback function to be run every frame the AS2 way. Code: this.onEnterFrame = myFunction; If I add another enter frame listener, will this replace the old one, or add to the old one, so both functions will run when frames are entered? And how do I remove these listeners?
I'm working with arrays in AS3 and some of the utility functions described in the livedocs such as filter() or some() would be very useful to me, if only I could pass parameters to them...
Actually, I cannot find a single example of the use of these functions with custom parameters passed to their callbacks. Everywhere, it is always used with constants ! E.g. on this page: [URL]
var arr:Array = new Array();var totalElements:uint = 100;for(var i:uint = 0; i<totalElements; i++) { arr[i] = Math.round(Math.random()*100);}function isLargerThan90(element:*, index:int, arr:Array):Boolean { return element > 90;}var highestNumbers:Array = arr.filter(isLargerThan90);trace(highestNumbers);
What I need is a kind of "isLargerThan" function with "90" as an argument's value, not as a constant. Something like
function isLargerThan(element:*, index:int, arr:Array, param:Object):Boolean { return element > (param as Number);}I find it very odd that I cannot find no mention of the way to do this on the whole WWW, because that makes these utility functions absolutely helpless in many many cases and programming with arrays a real pain...