Webcam Privacy DENY

June 8th, 2009

Working with a online webcam application and when trying my user-cases I noticed an irritating problem.

When connecting a webcam class to a Video the Privacy settings automaticly appear.
video.attachCamera( camera ); 

But if the user clicks DENY instead of ALLOW you can get into a little problem. My application needs a webcam so what I do is to show the user some copy and telling them to ALLOW the webcam or go somewhere else to play.

To check if the first time was allowed or not is easy with 
camera.addEventListener(StatusEvent.STATUS, onCameraStatus);
but this is only triggered first time, event if I create a new Camera and Video class. 

Solution
After the first event I set a variable that the user has already got the Privacy window. IF the user selects DENY and I want to give them another change (after my nice warning window) I do everything EXACTLY the same way, JUST ADD
Security.showSettings(SecurityPanel.PRIVACY);
If it’s the next try.

Flash , , , , ,

getTimer NOW()

April 13th, 2009

Matching timings in Flash takes a while and lazy as I am adding StopWatch functions all over… well.
So I use this simple thing, click on the textfield to start counting, press again to get milliseconds copied to clipboard.

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

Flex , ,

Social Network Links

April 11th, 2009

Wanted to post some Social media links on a site that I’m building but couldn’t find any good summary information, well, so here we go.

share_facebook

 

 
Facebook

http://www.facebook.com/sharer.php?u=’+encodeURIComponent(u)+’&t=’+encodeURIComponent(t) 
u = url to site
t = title of link

share_delicious

 

Delicious
“http://delicious.com/save?url=”+u+”&title=”+t;
u = url to site
t = title of link
m = metadata for link

share_myspace

 

MySpace
“http://www.myspace.com/Modules/PostTo/Pages/?u=”+u+”&sa=2&t=”+t+”&c=” 
u = url to site
t = title of link

share_digg

 

Digg
“http://digg.com/submit?url=”+u+”&title=”+t+”&bodytext=”; 
u = url to site
t = title of link

share_twitter

 

Twitter
“http://twitter.com/home/?status=”+t+” “+u
u = url to site
t = title of link

share_stumble

 

 
Stumbleupon

“http://stumbleupon.com/submit?url=”+u+”&title=”+t 
u = url to site
t = title of link

Createad a simple js file to use for html pages or why not Flash applications. Send the types; facebook,delicious,myspace,digg,twitter or stumbleupon. 
socialShare(type, link, title);

function socialShare(type,link,title,meta)
{
	var shareURL;
	var u = encodeURIComponent(link);
	var t = encodeURIComponent(title);
	var m = encodeURIComponent(meta);
	if(!m) m = t;
	var w = 626;
	var h = 436;
	switch(type)
	{
		case "facebook" :
			shareURL = "http://www.facebook.com/sharer.php?u="+u+"&t="+t;
			break;
		case "delicious" :
			shareURL = "http://delicious.com/save?url="+link+"&title="+title+"&q="+title+"&meta="+encodeURIComponent(m);
			break;
		case "myspace" :
			shareURL = "http://www.myspace.com/Modules/PostTo/Pages/?u="+link+"&sa=2&t="+title+"&c=";
			break;
		case "digg" :
			shareURL = "http://digg.com/submit?url="+link+"&title="+title+"&bodytext=";
			w = 730;
			h = 550;
			break;
		case "twitter" :
			w = 760;
			shareURL = "http://twitter.com/home/?status="+title+" "+link
			break;
		case "stumbleupon" :
			shareURL = "http://stumbleupon.com/submit?url="+link+"&title="+title
			break;
	}
	window.open(shareURL,"sharer","toolbar=0,status=0,scrollbars=yes,resizable=yes,width="+w+",height="+h);return false;
}

Download Social Share javascript.

Flash, Life , , ,

Tip of the day: Publish Time & Memory Increase

April 1st, 2009

At my company “Hello There” we are currently developing a really cool game that is built on the base of Papervision 3D 2.0 (Great White). We suddenly run into a really really annoying problem.

I could publish the Flash files without any complication but the other two team members couldn’t, and we have the same set of workstations. After a lot of searching it seems somehow that it’s a memory problem and some suggestions points to changing JAVA memory, well, we didn’t get that to work either so we took another solution.

By making the Papervision package to a SWC file it’s already compiled and takes less memory for Flash. If you have a bigger framework you should as well take your time to create a SWC package for it. The publish time will decrease and your will be working happily ever after =)

TIP: Use more SWC, will speed up your work & use less memory.

If you have Flex, here is an easy tutorial on how to create your SWC package.
1.) Create a “Flex Library Project”.
2.) Add your code that you want to compile.
3.) Right click on the project, Properties->Flex Builder Path
4.) Mark all the packages that you want to compile
5.) Finish, just refresh the project to make sure everything is compiled when you change anything. The SWC file is placed in the /bin folder. Ready to use for Flex & Flash.

Did a really short video;
preview image.

Flash, Flex , , ,

XML in Production (lazy)

March 30th, 2009

I’m working a lot with international sites and there can often be times where the deadlines are short, customers aren’t so fast as I wish they where with feedback e.g.

This often messes up translations with XML files. They needs to be resend for changes and as the sites takes interaction you can find that things are missing.

Here is a small tip if you are running out of time, make sure your XML structure is simple, as well make sure that you are using unique id attributes. Then you can just combine the XML files and you don’t really need to go thru hours of copy/paste work.

A small example.
XML 1
<xml>
<gui>
<item id=”replay”>REPLAY</item>
<item id=”start”>START THE GAME</item>
</gui>
</xml>

XML 2
<xml>
<gui>
<item id=”volumeOff”>TURN ON VOLUME</item>
<item id=”volumeOn”>TURN OFF VOLUME</item>
</gui>
</xml>

So what I do is just to add on and on and combine the XML;s.

var copy:XML = levelLoader.getXML("data/en.xml");
var copy1:XML = levelLoader.getXML("data/en01.xml");
var copy2:XML = levelLoader.getXML("data/en02.xml");
copy = copy.appendChild(copy1.*);
copy = copy.appendChild(copy2.*);
 
var volumeOff : String = copy.gui.(@id=="volumeOff");

Flash , , , ,

Bandwidth tester for server.

March 12th, 2009

So I needed to try out some speed from a company server. You can always take a bandwidth test on your computer to see your own bandwidth speed (http://www.speedtest.net/), but when placing files on a server you also need to consider that server speed, the connection and the whole way of roadblocks to your computer.

First step is to create a dump file, I just took a ordinary file and renamed it to “data.bin”.

Next step is the speed tester itself. If I figure it out correctly I can take the downloaded time and run it against the downloaded bits to get the speed.

var downloadTime:Number = (getTimer() - timeMarker) / 1000;
var bits:Number = file.bytesTotal * 8;
var bps:Number = bits / downloadTime;

Something like “bps = download size in bits / download secs”

To think of here is that when calculating file size 1mb = 1024kb, but when going for bits whe have 1kbps = 1000bps. Look at this (http://web.forret.com/tools/bandwidth.asp).

How to use
So anyway I created this simple zip file, unzip it on your server, place a file/files in the same folder and then set the paths from the html file, look at line 92“flashVars”, “files=data.bin”, use , to add more files to load as an array.

This way I could for e.g. check that my connection is 9.6mbit to the net but the speed from my hosting server is 4.5mbit.

Download the Server Speed Tester. bandwidthtester

Life , , , ,

iPhone Stop Motion

February 23rd, 2009

We looked at some stop motion at work and decided to create our own test with an Iphone. Nothing fancy pancy, have a look =)

 

Life , ,

Runtime Dynamic Fonts for CS4 (fp9), next-gen

February 13th, 2009

Runtime Fonts for Flash is a wonderful way when building apps, even better if you are as me and creating international apps for a lot of countries, you have the language supports and the problem with characters in fonts when staring to look at Greek, Japanese, Korea, Chinese and so on. I have a old Runtime font for CS3 that works pretty well. But when starting to use CS4 I wanted to improve the loading and sharing.

So the idea was to use Flex to compile Font SWF files, a big problem when I use Flash CS4 (fp9) and Flex 3. Flex will not recognize my font SWF file, it will also not recognize my local fonts to embed bold/italic font sets. Using an exported CS3 (fp9) file it works just fine.
Note; fp9 = Flash Player 9.

So lets look of how to do this.
First we need to create our font file.
1.) Create an Flex ActionScript project (I use framework 3.2)
2.) The Class name will be something that we will get later so I renamed my as file to FontHolder.as
3.) Remove the constructor and add the embed tags, example below. Note the unicodeRange tag, these are used to select characters to be embedded, remove to embed the entire font.

package {
	import flash.display.Sprite;
 
	public class FontHolder extends Sprite
	{
		[Embed(systemFont='Verdana', fontFamily='Verdana', mimeType='application/x-font', unicodeRange='U+0061-U+0074')]
		public static const verdana_regular:Class;
 
		[Embed(systemFont='Verdana', fontFamily='Verdana', mimeType='application/x-font', fontWeight='bold', unicodeRange='U+0061-U+0074')]
		public static const verdana_bold:Class;
	}
}

4.) Now you have your font SWF file to use for the project.

So with your font file it’s time to use it in the project. In this example I use my Flex 3 as CS3 development tool., this is because I create Flash Player 9 project. You can of course use only Flash IDE or any other kind of code editor.
1.) Create a new ActionScript project, change the SDK to CS3.
2.) Click next, “Main source folder”, type “src”, this is just to put the files more pretty =), Click Finish.
3.) Create a CSS file that will control the fonts. “default.css”. Just add two classes that we can work with.

h1{
	font-family: Verdana;
	font-size: 24px;
	font-weight: bold;
}
body{
	font-family: Verdana;
	font-size: 12px;
}

5.) Download the FontManager.swc file and add it to your project.

Add SWC HowTo for Flex
6.1.) Create a folder called swc in project folder.
6.2.) Place the FontManager.swc file into the created folder.
6.3.) Right-Click on project folder and select properties
6.4.) In menu choose “ActionScript Build Path”, Choose the tab “Library path”
6.5.) Click on “Add SWC Folder”,  Select the created swc folder and close the windows, all done.

Add SWC HowTo for Flash
7.1.) Create a folder called swc in project folder.
7.2.) Place the FontManager.swc file into the created folder.
7.3.) Open Flash and Publish Settings.
7.4.) Choose the Flash tab and click on Settings next to the script combobox.
7.5.) Choose the “Library Path” tab and add the swc file to the list, all done. 

So, everything is there. How am I using it? Well, this is a dump on the project playground.
dynamic_files1

 

 

 

 

 

 

 

 

To be able to use the fonts they are needed first to be loaded. By default this is the structure for font swf and css file named default. They can be changed by FontManager.name = ‘default’ (the name) and the path with FontManager.path = ‘fonts/’.

The easiest way is to just get the singleton and load it.

var manager:FontManager=FontManager.instance();
manager.addEventListener(Event.COMPLETE, onManagerComplete);
manager.loadStandalone();

When it’s loading just send the textfield, style and text to the FontManager, you can add only textfield and text if you want to add e.g. multiple styles to one textfield.
Here’s some examples.

private function onManagerComplete(event:Event):void
{
	var tf:TextField = new TextField();
	tf.autoSize = TextFieldAutoSize.LEFT;
	tf.border = true;
	tf.rotation = 6;
	FontManager.instance().register(tf, "h1", "abc");
	this.addChild(tf);
 
	var tf1:TextField = new TextField();
	tf1.autoSize = TextFieldAutoSize.LEFT;
	tf1.x = 150;
	tf1.border = true;
	tf1.rotation = 6;
	FontManager.instance().register(tf1, "body", "abc");
	this.addChild(tf1);
 
	var tf2:TextField = new TextField();
	tf2.autoSize = TextFieldAutoSize.LEFT;
	tf2.x = 300;
	tf2.border = true;
	tf2.rotation = 6;
	FontManager.instance().text(tf2, "<h1>abc</h1>\nabc");
	this.addChild(tf2);
}

Flash, Flex , , , , , ,

Scandinavians in Facebook

February 6th, 2009

I took out some information from Facebook about members and sex in the Scandinavian and looked up some population statistics from wiki. Here are the results;

Percent of members based from country population.

chart_percent

 

 

 

 

 

 

 

 

 

Here’s a overview of the countries population, facebook memeber and sex. Think it’s kinda cool that the majority of members are girls. Rock on I say. Rock on!

statsfacebook

Life

Encode to FLV

February 3rd, 2009

This is a quick help for how to Encode/Convert movies to the Flash FLV format. There are a couple of general encoding features that could be good to know. The key is to find a good balance of frame rate, data rate and keyframe.

When working with digitally compressed video in a format such as Flash Video, the higher the frame rate, the larger the file size. To reduce the file size, you must lower either the frame rate or the data rate If you lower the data rate and leave the frame rate unchanged, the image quality is reduced. If you lower the frame rate and leave the data rate unchanged, the video motion may look less smooth than desired. Something to remember here as well is that you can never gain quality when encoding, so if you have a bad video to start with it will not get any more pleasant to look at just because you boost the data rate.

For short;
Frame rate (fps); The less, the more jumpy.
Data rate (bitrate); The less, the more pixels/blur.
Keyframe; The less, smaller file size.

Since Flash Player 9,0,115,0 there is now the possibility to convert HD quality, so i brief version list of the codecs;
Flash 6-7; Sorenson Video
Flash 8-9; On2
Flash 9-10; On2 (new F4V open format since 9,0,115,0)

There is a really good convert guide to get some help on the export settings;
http://www.adobe.com/devnet/flash/apps/flv_bitrate_calculator/

How to work out the best video compression for me?
This is the hard bit, for short I would recommend these steps.
1.) Figure out a compression that you guess would be the perfect one (get help from calculator).
2.) Setup 4 more compressions, 2 that has higher quality than your (1.) setting and 2 that are below.
3.) Line up all the videos and find the video with the lowest quality settings but that you find is still good. Now from this go back to step 2.
4.) After a couple of rounds this way you should have found a compression for your video.

Remember that all videos are different, so there is no magic setting that will work on all your videos. Also when choosing the “best” video you need to keep track on the file size and what the target is going to be.
Read more…

Flash , , , , , ,