Actionscript 3 :: Synchronize Changes To A Textfield?
Nov 18, 2010
I'm experimenting with P2P on Flash, and I've come across a little hurdle that I'd like to clarify before moving forward. The technology itself (Flash) doesn't matter for this problem, as I think this problem occurs in other languages.
I'm trying to create a document that can be edited "live" by multiple people. Just like Google Docs pretty much. But I'm wondering, how would you suggest synchronizing everyone's text? I mean, should I message everyone with all the text in the text field every time someone makes a change? That seems very inefficient.
I'm thinking there has to be a design pattern that I can learn and implement, but I'm not sure where to start. Optimally, the application should send the connected clients only the changes that have occurred to the document, and have some sort of buffer or error correction that can be used for retrieving earlier changes that may have been missed. Is there any established design pattern that deals with this type of issue?
I want to synchronize sounds perfectly to do a kind of Audio Mixer, using different sounds. All I have been able to do is to play 2 sounds at the same time, but I cannot do it with 3 audios or more, they don't go synchronized. JamStudio.com does it perfectly, I've been researching and researching and I just don't know how to do it! How does JamStudio.com synchonize audio so perfectly? you can even change sounds and the new ones will come on time! How do I do that? Is it just Action Script? or are they using something else?
The question is how could I stop a method being called twice, where the first call has not "completed" because its handler is waiting for a url to load for example?
I have written a flash client which interfaces with a java server using a binary encrypted protocol (I would love to not have had to re-invent the whole client/server object communcation stack, but I had to encrypt the data in such a way that simple tools like tamper data and charles proxy could not pick them up if using SSL).The API presents itself to flas as an actionscript swf file, and the API itself is a singleton. the api exposes some simple methods, including:
login() getBalance() startGame() endGame()
Each method will call my HttpCommunicator class.HttpCommunicator.as (with error handling and stuff removed):
public class HttpCommunicator { private var _externalHalder:function; public function communicate(data:String, externalHandler:APIHandler):void { // do encryption
[code]...
Will the second call trounce the first calls communicator variable? i.e. will it behave as if its static, as there is onlyone copy of the API object?If say there was a button on the GUI which had "update balance", and the user kept clicking on it, at the same time as say a URLLoader complete event hander being called which also cals the apis getBalance() function (i.e. flash being multithreaded).
making two web banner commercials where a bottle is supposed to fall from one banner to the other. The two files are separate and I dont think I can communicate between them. I need a quick solution to make the animation start at the same time in both files (if one file is loaded quicker than the other). Is this possible? Ive seen commercials where this has been done, but I dont know how they did it. I use as2 but if you have a solution in as3 its no problem.
I've just learned this process in the Flash CS4 help manual (page 276), but unfortunately the sound track I placed in a movie clip timeline (used as a button OVER state) doesn't stop playing once I mouse away from the button. So, I presume a simple myBtn.addEventListener(MouseEvent.MOUSE_OVER, clickHandler) could allow me to execute a method in a function to stop the repeating sound.
Multiple computers running a kinda of quiz (in asp.net). Every one of them plays a video as background (in the browser), sorta like a screensaver (with advertising). When moving the mouse a div pops up which allows the user to choose a quiz in fill out the forms. The catch is that the video needs to be synchronized on all the PCs.These are the constraints: The asp.net code is already there, so writing it completely in flash is no option. We know .NET, javascript, html, the standard webdev stuff best, so investing time is something new is a last resort.
addElement and removeElement is called by two separate timer events. And in each method it modifies the global variable NoOfElements. Is there a method to synchronize variables in acionscript ?
I have multiple children movieclips containing png images inside of a parent movieclip. The parent movieclip has a slow looping animation. The children don't stay in sync with one another during the animation. It becomes obvious to see because there is a background child clip with other child clips on top of it. It appears to only happen with movieclips containing a bitmap image. Does anyone have an easy fix or work around for this?
I'm building a game with two main objects on screen.
1) An animated MovieClip with 144 frames inside.
2) A ball that will be moving around the screen.
I've animated both objects with two different timers. One has a delay of 0.0333 seconds (30 fps) and the other has a speed of 0.0222.
Now there is something I do not understand. If both objects start moving/animating at the same time... When my ball reaches certain point on the stage, I check the currentframe property of the other animated moviclip but it's never on the same frame at that point. It varies...
If they are both at a constant speed, even though they are different speeds, why would the animated movieclip be on a different frame each time? It varies a few frames each time I output it to check.[code]...
I plan to use a timer event to fire every second (for a clock application).
I may be wrong, but I assume that there will probably be a (very slight) sync issue with the actual system time. For example the timer event might fire when the actual system time milliseconds are at 500 instead of 0 (meaning the seconds will be partially 'out of phase' if you will).
Is there a way to either synchronize the timer event to the real time or get some kind of system time event to fire when an second ticks in AS3?
Also if I set a Timer to fire every 1000 milliseconds, is that guaranteed or can there be some offset based on the application load?
I'm trying to play multiple video streams simultaneously. However, I cannot synchronize these videos to play at the same rate.
I have three 45-second videos in FLV format and I use flash.net.NetStream to play these videos. I call netstream.play() of these netstream at the same time (by using a for-loop). However, these videos are out-of-sync even all videos files are on my local machine.
For example, when the wall clock is at 10th second, the first video is at 7th second, the second video is at 10th second, and the last video is at 5th second.
I think it may be affected by different jitter delays when streaming. However, I still cannot find the way to solve this problem.
I have a flash project where I have two movies that are supposed to synchronize, depending on user choices. Most of the time they do, randomly they do not. So I thought perhaps there is something wrong with the code I am using.
Code: on (press){ this.movie1.gotoAndPlay(random(this.movie1._totalframes)); if(this.movierandom.enabled == false){ this.movie2.gotoAndPlay(this.movie1._currentframe); }}
What's supposed to happen is, when the button is pressed, movie1 goes to a random frame and plays. If movierandom is not enabled, movie2 is supposed to go to the same frame as movie1 and play. Movie1 and movie2 have the same number of frames. Occasionally, movie2 goes to a different frame.
I want to synchronize sounds perfectly to do a kind of Audio Mixer, using different sounds. [URL] does it perfectly, I've been researching and researching and I just don't know how to do it! How does [URL] synchonize audio so perfectly? you can even change sounds and the new ones will come on time! How do I do that? Is it just Action Script? or something else?
how can i make a movieclip and a textfield to resize to the content of the text in the textfield? I mean, if I have a textfield with 3 letters font name XXX and then the content of the field change, how can i resize te textfield so the text dont autoadjust to the 3 letter space?
Does anyone know, why a textfield may become white when loading text + JPGs into it? Sometimes it happens to me, sometimes not. I haven't figured out why. If you have any clues... The AS I'm using:
I am looking to change the background color of a input textField when the user selects that testfield to start populating it. I have done a bunch of searching and I keep coming up with this type of answer...
Code: myTextField.onSetFocus = Set(evt:Event){ // Change color }
Problems...
1) Is onSetFocus/onKillFocus still available? From what I can tell it is not.
2) I have my text objects encapsulasted in a class so I do not believe I am able to do it like I have been suggested.
I'm using the following to remove a textFeild from the stage I then need to add this textField back to the stage at a later time....i tried using addChild the problem is the text that was in the text field prior to the removal is still in the textfield when i re add it......How do i remove the textfield and replace it with a fresh textfield at a later time?....using msgTa.text =""; is not an option.
I just recently started playing with cs5 and it's new features. I tried to rotate a textfield with the 3D rotation tool, but when you do this, the textfields gets blurry.And it seems like it's not a vector text anymore, because when you zoom in, it still is blurry.Is there a way to prevent that?
i would just like to ask why is the case that when i use embedfonts = true on a textfield, the textfield's text only resizes according to the textfield's height but not the textfield's width. meaning if i make the textfield's height bigger, the text also gets bigger in terms of height, but not width, can't the embedded font maintain aspect ratio according to the textfield height?
I'm only wondering about this because this is not the case when embedfonts= false
Attached is basically a recreation of the problem. What I'm basically trying to do is a tooltip window with 4 frames. Each frame has different textfields but also some the same. Like the "Weapon" frame has textfields called namebox, typebox, levelbox, and damagebox, while the "Armor" frame has namebox, typebox, levelbox, and defensebox.
In the attachment there is a Movieclip called awd on the stage. It has 2 keyframes in it called "Weapon" and "Drop" each with their own textfields but they are both called "box". I have a click event listener that makes awd go to its second frame and outputs the second child in awd, which will be the textfield. The problem is when I click the first time, awd goes to the second frame but it outputs null instead of Object TextField. When I click again it outputs Object TextField. If I trace the number of children it gives me 2. So I don't know how it can be null.
I've got a flash document using AS3. It dynamically reads data from an XML file, and creates a bunch of single line textFields. Could be like this:
<XMLdata> <Line>this is line 1</Line> <Line>this is line 2</Line> <Line>this is line 3</Line> </XMLdata>
So, for each node, it would create a new TextField, and change the textField.y value so that they are "stacked" on top of each other. All this if fine, except that if you hae so many "lines" (or textfields) that the "stack" is taller than the Flash Document size. What I would like to do is have a scroll bar or something so you can scroll the stack of TextFields. Doesnt' even need to be a scroll bar. Maybe an arrow button at the bottom, and when you click on it, it scrolls down. One for up too.
I have a numerical stepper,and a user can click on a textfield, then click the up and down arrows on the stepper to change the font size,i then try and set the focus back to the textfield and put the caret at the end of the textfield, but the stepper keeps focus anyway.Here is the event handler for when the stepper value is changed.Get the textfield's current format, change the size, set the new format, then focus on the textfield and set the caret position, but the caret just stays inside the stepper.
Code: private function handleChangeTextSize(e:Event):void { var tField:TextField = Main.LAST_FOCUSED_OBJECT;[code]....
I've had problems with other components too with the exact same focus issue and the only solution i've ever come up with is to set a timeout for like 100 milliseconds to set the focus back then and it works. another way to do this without the "hack"?
What I have is a dynamicly created row of movieClips. In which TextFields are added with text that's received from an Array. What I would like to be able to do is click on the movieClip that's visible and have the code understand I clicked array[3] for example and it will show the 4th array item in another textfield.
I have two text fields and the user can use a button to underline text in either field. I have a listener on each field that keeps tracks of the last clicked in field.
public function setLastActiveTextField(event:FocusEvent):void { lastTextActiveField=event.currentTarget; trace(lastTextActiveField.name); }
[Code]....
lastActiveTextField is defined as an Object. When the highlight button is hit, it reports the correct the range, but I can't figure out how to send the formatting to the actual textfield without setting up another if (lastActiveTextField.name==field2) control. Also, stage.focus won't work because the object isn't really on the stage, I guess. There has to be a way to refer to the textField object.