• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1318
  • Last Modified:

AS3 Concatenate integers


I'm trying to concatenate three different integers to make a string with the code below. However I'm getting the following error.

1067: Implicit coercion of a value of type Number to an unrelated type String.

Can anyone tell me how to do this?

Also I have very little knowledge of AS are the functions correct to produce; Random Number between 0-99 - Seconds since 01/01/1970 - Random Number between 0-99? for example...

If part 1 came back as 45, part two came back as 1234567890 and part 3 came back as 12 I would want the uniqueKey var to be 45123456789012 NOT 1234567947
var now:Date = new Date();
var uniqueKey:String = (Math.random()*99) + now.getTime() + (Math.random()*99);

Open in new window

2 Solutions

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
			private function init():void{
				var now:Date = new Date();
				var uniqueKey:String = (Math.random()*99).toString() + "--" + now.getTime().toString()  + "--" +  (Math.random()*99).toString();
				textField.text = uniqueKey;
	<mx:Text id="textField" x="95" y="253" />

Open in new window

try this...

PS: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Date.html 
var now:Date = new Date();
// use .toString() to avoid addition
var uniqueKey:String = (Math.round(Math.random()*99)).toString() +" - "+ (now.getTime()).toString() +" - "+ (Math.round(Math.random()*99)).toString();
//1) Generate random number : 
var rn:Number = Math.random()*99
trace("rn = "+rn);
var addition:Number = rn+rn;
var concat:String = rn.toString() + rn.toString();
trace("addition = "+addition);
trace("concat = "+concat);
// Should both trace the same
trace("rn.toString() = "+ rn.toString());
trace("rn =  "+ rn);
trace("Math.round(rn) = "+Math.round(rn));
trace("Math.floor(rn) = "+Math.floor(rn));
trace("Math.ceil(rn) = "+Math.ceil(rn));
trace("uniqueKey = "+uniqueKey);

Open in new window

Mr_SplashAuthor Commented:
Thanks guys, I've split the points as both solutions were pretty much the same and were posted at the same time.

This is all that was needed in the end.
var uniqueKey:String = (Math.round(Math.random()*99)).toString() + "" +(now.getTime()).toString() + "" + (Math.round(Math.random()*99)).toString();

Please let me know if there is something incorrect with that.

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now