TransforAS3OverInfinityNumberByAlchemy
Step 1:
flex input over infinity number string to c(by TextArea):
Step 2:
c get this AS3_String number to double:
Step 3:
c cast double to char ,return AS3_String(char *const) to flex;
Step4:
flex display the result;
Code(flex):
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="onCreatioComplete(event)" height="200">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
import cmodule.TransforNumber.CLibInit;
// import cmodule.vectorSample.CLibInit;
private var myCLibInit:CLibInit;
private var myCLib:Object;
private var myResult:String;
internal function onCreatioComplete(event:FlexEvent):void
{
myCLibInit = new CLibInit();
myCLib = myCLibInit.init();
trace(myCLib);
}
internal function submitHandler(event:MouseEvent):void
{
myResult = myCLib.transforNumber(Number(myTextArea.text));
resultTextArea.text = myResult;
}
]]>
</mx:Script>
<mx:Form width="400" defaultButton="{submitBtn}" verticalCenter="0" horizontalCenter="0" height="200">
<mx:FormHeading label="TransforFlexMaxNumberByAlchemy" textAlign="center"/>
<mx:FormItem label="Your number here:" width="100%">
<mx:TextArea id="myTextArea" width="100%" height="100%"/>
</mx:FormItem>
<mx:FormItem label="result from c:" width="100%">
<mx:TextArea id="resultTextArea" width="100%" height="100%" enabled="false"/>
</mx:FormItem>
<mx:FormItem width="100%">
<mx:Button id="submitBtn" label="Submit" width="100%" emphasized="true" click="submitHandler(event)"/>
</mx:FormItem>
</mx:Form>
</mx:Application>
Code(c):
#include "AS3.h"
#include<stdlib.h>
#include<string.h>
#include <stdio.h>
/*
* Simple Demo transfor flash overInfinity number
*
* @author Knight.zhou
* @date 4/3/09
* @see http://blog.lookbackon.com
*/
/*
* transforNumber
* returns string
*/
AS3_Val transforNumber(void *data,AS3_Val args)
{
/*Create string display loooong number*/
double my_double;
my_double = AS3_NumberValue(args);
char my_string[99999]; //To hold . and null
sprintf(my_string,"%9999.4f",my_double);
return AS3_String(my_string);
}
/*
* Main
*
* Start app her
* Register Flash Functions, free and init Alchemy
*/
int main(void)
{
/* define the functions available in flash */
AS3_Val transforNumberMethod = AS3_Function(NULL,transforNumber);
/* build the result object */
AS3_Val result = AS3_Object("transforNumber:AS3ValType",transforNumberMethod);
AS3_SetS(result,"transforNumber",transforNumberMethod);
/* free */
AS3_Release(transforNumberMethod);
/* init */
AS3_LibInit(result);
return 0;
}
Demo:
Source:
