How to embed a text file in Flash
Reading some comments about the “Word Play” Flash Game Contest on this blog and on some forum threads, I noticed people can’t import a big list of words into Flash.
So here I am with a complete example :)
First, put your txt file in the same folder of your Flash project.
Then, the main file can be something like this one:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package { import flash.display.Sprite; import flash.text.TextField; public class wordz extends Sprite { var text_field:TextField = new TextField(); var words:embedded_text = new embedded_text(); public function wordz() { addChild(text_field); text_field.height=400; text_field.width=500; text_field.text=words.toString(); } } } |
Really nothing new except the words variable at line 6 that belongs to a class called embedded_text, that is the key class of this example.
Let me show it:
|
1 2 3 4 5 6 7 8 |
package { import flash.utils.ByteArray; [Embed(source="words.txt",mimeType="application/octet-stream")] public class embedded_text extends ByteArray { public function embedded_text() { } } } |
What? That easy?
Yes… the magic is at line 3 where I specify the path and the mime type of the file to embed. And I’ll have it ready to use into my Flash project
I can’t show you the final result because displaying thousands of words would crash the browser, but if you download the example, you can click on it and scroll the mousewheel to see all words I am using in the game I am developing to enter the contest.
Download the source code and enjoy.
They can be easily customized to meet the unique requirements of your project.












This post has 15 comments
Hawdon
Cheeeeers!
Thanks a lot!
HiddenSpartan
From what I’ve heard, that only works in Flex (or else I read Essential Actionscript 3.0 wrong).
Cyclonic
Actually, HiddenSpartan, I am pretty sure the Embed metatag (used here) is supported in Flash CS3+. It does for me, anyway.
And, you can get the Flex SDK for free at labs.adobe.com.
Roland
Any chance of getting an Actionscript 2.0 example :(
wirelesstaco
The Contest link at the very end of the article is broken.
Mike Chambers
@HiddenSpartan
–
From what I’ve heard, that only works in Flex
–
Flash CS4 uses the MXMLC compiler, so you can use the meta data tags / commands.
Christopher Spence
HiddenSpartan: This works in Actionscript 3 without Flex Builder though it does require installation of the free Flex SDK, and a non Flash-IDE compiler (e.g., FlashDevelop, Command Line w/ ANT). I know that Flash CS3 did not support embed directives, though I understand that CS4 supports at least Font embedding… so maybe this works in Flash CS4?
I don’t imagine that an AS2 example exists; perhaps you could try using an include statement.
I used something similar to this for compressing xml into a swf (it’s like a 90% savings on file size when you enter the xml directly as a string in an AS class… it’s a bit less compression using the method described above, because the class compiles with a class or two from the mx package (where flex sdk comes in)
Anyhow, this is a cool and very under-documented trick.
Idden
Nice Work around.
You gain speed but lose a flexibility. If you want to change the word list, you will have to compile the swf again.
@Roland It doesn’t work in AS2 but you can try swfmill to do somthing similar: http://swfmill.org/
Radi
Hey, thanks for the info. this is really what I’m looking for! ^^
Nathan
When I tried it out nothing happened
I’m using Flash CS3
How to use an embedded text file in Flash : Emanuele Feronato
[...] The opportunity to win up to $7000 with “Word Play” Flash Game Contest ends in 20 days, and I already showed you how to embed a text file in Flash. [...]
Alpesh Vaghasiya
Same Here. I also try in Flash CS3 nothing is working.
How to use an embedded text file in Flash by Blam Yo!
[...] The opportunity to win up to $7000 with “Word Play” Flash Game Contest ends in 20 days, and I already showed you how to embed a text file in Flash. [...]
Vojta
Hi,
A small note on the tutorial -
you don’t need to create the embedded_class manualy, i’d rather consider creating it directly in the code (for better code organisation).
Here’s the example:
[Embed(source = '../../../assets/texty/who_am_i.txt', mimeType = 'application/octet-stream')]
private var src_who_am_i:Class
public function f_who_am_i():void
{
var text_source:ByteArray = new src_who_am_i() as ByteArray;
text_field.text = text_source.toString()
}
BR,
Vojta
Christopher
You could also do something like:
[Embed(source="words.txt",mimeType="application/octet-stream")]
private var embeddedWords:Class;
public var words:String = String(new embeddedWords as ByteArray);