ActionScript :: Multithreading - Timers And Threading In Flex 3
Jun 7, 2010
Does it run in a separate thread or the main loop? If the latter, does that mean that the Timer might not be called if the main loop is in a long-running action?More generally, what can you tell me about threads running in ActionScript? My once-a-minute Timer is called if an event-handler runs for minutes, so it is not the case that all ActionScript runs in one thread.
How can I use the Timer class and timer events to turn this loop into one that executes chunks at a time? My current method of just running the loop keeps freezing up the flash/air UI. I'm trying to acheive psuedo multithreading. Yes, this is from wavwriter.as:
I am aware that Action Script does not provide multithreading so when writing flex application we are limited to work on one thread. which is ok for rendering my UI.
However some questions arise when preferring flex over silverlight:
As a UI layer single thread is good enough but is it fair to assume that for Aync httpservice like operations in flex , internally it would use some worker threads to manage the async operation and then come back to the main thread ? it looks like it does since my UI does not freeze.Can the flex/flash player deal with multiple httpservice calls in parallel ? ( e.g more than one section of the UI loading data at the same time.)How about the animation stuff ( e.g the parallel animation ) - does flash player internally leverages some threading for accelerating graphics or is it all done on the UI thread ?
I know that flex does not support multi threading however, I would like to clear a doubt.I have two events that call a same function. Suppose the two events occur at the same instant (or in quick succession) will the handler be called twice, one after the other or there is a chance that if the handler function is taking too much time to execute the same handler can start executing simultaneously.
In a game I'm making the timers that I use go one speed when I run it by pushing Ctrl-Enter in Flash but when I run the external .swf file created, the timers go considerably slower.I have managed to work around this by making the timers reset at lower intervals but I would rather not have to resort to this.
I want to download a video on mobile device through flex framework. For that reason I need to have support of multithreading so that I can download video in background. Unfortunately, Flex doesn't have multithreading support. I am quite new with flex environment.
I have a flex app that has several timers running for various amounts of time and for various reasons. I'd like to be able to stop all timers running if the user goes over a specified amount of time, but don't want to individually stop the timers using timer.stop(); Is there a way to stop all timers globally or find and iterate over all timers running and stop them?
I have a Delphi 6 Pro program with a TWebBrowser component that loads a web page that embeds a Cool Iris Wall. The Cool Iris wall is an SWF object which means that when running, the execution happens inside the Adobe Flash player, an ActiveX or similar object I believe. The problem I am having is that sometimes when the Wall is loading pictures/videos from the web, it takes a big hit on the CPU on the main UI thread. I know that TWebBrowser moves most of its operations on to a background thread to keep the main UI thread happy, but something the Adobe Flash Player is doing is happening on the main UI thread and its causing my program much grief. Is there a way to move the Adobe Flash Player on to a background thread?
[UPDATE - 12/7/2010] - After a marathon probing and debugging session it turns out that the problem had to do with the Cool Iris Wall's Flickr proxy. You can interface with the Wall in two main ways: 1) You pass them special Flickr api protocol URLs and let them talk to Flickr for you, for example [URL]..loads the Wall with the results of a Flickr keyword search for puppy. The advantage to this approach is that they do all the work for you necessary to make the query to Flickr and build the Wall's contents. 2) You build an RSS media feed yourself containing the photo stream item data and feed it to the Wall.
I was using technique #1. The problem is with #1 is that when their servers have trouble building the Flickr feed for you (for whatever unknown reason), their host SWF puts a heavy load on the CPU interfering with the main UI thread's operation. I converted my entire code base to work directly with the Flickr API and create the feed myself using the second technique and the problem vanished.
I created a new class with private vars and public get properties.When I create a new instance of the class, it loads text files content to the private vars - it probably takes a bit of time to load it.After the new instance created, I try to get the value of the private var with the get property:
var item1:MyItem = new MyItem("0001");
trace(item1.ItemName);
Well, The output is blank.The string that ItemName points to is not undefined, it contains data.So, it's like a timing issue, and ActionScript is probably running the code using background multi-threading, so it's calling the trace command before it finished to run all methods in the MyItem c'tor (methods that load the text file data into the String var that ItemName points to).
Is there any way to force ActionScript avoid using this unwanted "background multi-threading", and run the code normally (by the order of the commands)? I mean like "Don't run the 2nd command until you finished running the 1st one".
I'm working on a project in flex and I have a few questions pertaining to performance. First off I know that I cannot write multi threaded programs but I understand the internals of the flash player are multithreaded1. when i call ActionScript Code:loaderObj.load(new URLRequest("ljdsfglsdhflsd")); will flash player make a new thread for that?2. I am also interested in making a custom Event class will the listener (which i assume is a loop that runs once per frame or more) run in a different thread. I want to minimize CPU usage as much as possible in areas I can.
If your Flash app is in the middle of some code, such as a method, or the AS on a frame, and it gets a callback from an asynchronous event, how does it handle that? Is execution halted on the current code to handle the callback? Or does the currently executing code finish first?
I can't seem to find any white papers or documentation on the threading behind Flash.
is there a way in as3 to run multiple tweens at the same time without them crashing? eg. I had a problem with a movie clip.. on mouse over it would glow, and if clicked it would move to another place... the problem was if the user clicked the clip while it was glowing, the "glow" tween was interupted and the clip moved to another place but kept the glow... another eg. if i play an embedded video at the same time an animaton of some sort starts at another part of the screen, they both slow down.... so basicly, is there a way to make multiple tweens and/or videos run smooth at the sam time?
I need 20 separate timers, to be used with 10 separate objects, and need to be able to start, stop, and edit the delay time of each timer separately.
My question is; would having 23 timers going on simultaneously slow the program down, and is there a quick or easy way to mass-create and mass-edit timers (arrays? for/next loops? I'm pretty new to ActionScript...)
I developed a flash/as3 animation recently which used a couple of timers. I devved on a mac and then transferred the fla to a pc. When I output the swf from the pc it acted different.The timers were much faster
I developed a flash/as3 animation recently which used a couple of timers. I devved on a mac and then transferred the fla to a pc. When I output the swf from the pc it acted different. The timers were much faster. Has anyone seen this before?
I'm trying to use 2 separate timers in a flash solution (CS4, AS3). The second timer won't fire. I need 2 constant events. one could drive the other
I'm displaying a different image every x seconds. I'm fading the old image out and then fading the new image in. Unfortunately, I've not been able to get these events to work in tandem. fade in and out times are both 2 secs & need to be sequential.
As far as I understand this should work, but it's not.The situation:A timer starts with a random number to determine how long it takes for a movieClip to spawn.When it spawns a second timer starts running for 2 seconds, after these 2 seconds the movieClip needs to be removed again and the first Timer starts again, again with a random number. But the comm between the Timers isn't running smoothly...The timer does get set to it's new value, it starts counting down again, but it never fires the if statement again.
PHP Code: private function nBallTimerHandler(e:TimerEvent):void{nBallCnt--; trace(nBallCnt);if(nBallCnt = 0)
I would like a lightweight script that loops through an array, counting down to the next item in the array (over and over again).
Code:
countdown_dur = new Array ( [1,20,2,20,6] );
It would be perfect if this series of countdowns could repeat until the day is then done, and then start over again at 6:29AM the following day.[edit] The countdown_dur array holds the time (in minutes) for each countdown before the next begins.
Action Script and I am having a rough time finding the solution to making my timersloop after the last timer has completed
Here is the code: import fl.transitions.Tween;import fl.transitions.easing.*; var learnDone:Timer=new Timer(3000);learnDone.addEventListener(TimerEvent.TIMER,
I have a container named circleHolder_mc. Inside I have four circles named circ0_mc circ4_mc. My goal is to have each circle blink on mouseover. The closest I've got is the following code which causes all of the circles to blink at the same time.
circleHolder_mc.addEventListener(MouseEvent.MOUSE_OVER, onBlink)circleHolder_mc.addEventListener(MouseEvent.MOUSE_OUT, unBlink) var timer:Timer = new Timer(1);timer.addEventListener(TimerEvent.TIMER, onTimer); function onTimer(evt:TimerEvent):void{ alpha +=7;} function onBlink(evt:MouseEvent):void{ timer.start();} function unBlink(evt:MouseEvent):void{ timer.stop(); alpha = 100;}
I have this random movie player with 6 buttons that play the individual movies. The random movies have a title and a countdown timer that is working.I cannot make the timer work on the individual buttons.
var LevelCode:Array = [10,20,30,40,50,60,70,80,...,990,1000]; var Piece0:Timer = new Timer(50, LevelCode[0]); var Piece1:Timer = new Timer(50, LevelCode[1]); ... var Piece98:Timer = new Timer(50, LevelCode[98]); var Piece99:Timer = new Timer(50, LevelCode[99]);
I want to start Piece0 timer, Piece1 timer, etc., at the same time. I tried Piece0+Piece1.start();, but it did not work.
There is probably an easier way to do this and I would be great full if someone has the solution. This code is on frame 1 and is the only frame in the .fla, I am trying to get it to start over once it finishes the last timer. What I really want to do is create a picture banner with 4 images visible at a time and each one transitions to 2 or 3 different images periodically. Is there a better way of doing this with code? I really don't want to animate this all on the time line. here is the code I have
take an arbitrary variable, and create that number of timers, with a corresponding number of listeners? And then write a function to deal with the listeners?