`
phinecos
  • 浏览: 343560 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Adobe Achemy入门指南

 
阅读更多

1,需要用到的开发工具有:1Alchemy 2)Cygwin 3)Flex SDK(3.2+) 4)Java(只需要JRE就够了) 5)Flex Builder

2,安装步骤:

1)Alchemy解压缩到c:/alchemy

2)Flex SDK解压缩到c:/flex

3)Cygwin选择包这一步时,确保选中下述三个包:

a)Archive目录下的zip

b)Devel目录下的gcc-g++

c)Perl目录选择完全安装(Install)

3,为了让Cygwin在每次启动后知道Flex SDKAlchemy的路径,我们可以在其启动脚本中把

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> PATH=/usr/local/bin:/usr/bin:/bin:$PATH

改成

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> source/cygdrive/c/alchemy/alchemy-setup
PATH=/usr/local/bin:/usr/bin:/bin:/cygdrive/c/flex/bin:$PATH

4,启动Cygwin,若出现下述提示信息:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> cygpath:commandnotfound

则修改cygwin.BAT文件如下:

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->@echooff
C:
setCYGWIN=ttynotitleglob
setPATH=%PATH%;c:/cygwin/bin;c:/cygwin/sbin;c:/cygwin/usr/bin;c:/cygwin/usr/sbin;c:/cygwin/usr/local/bin
setLD_LIBRARY_PATH=c:/cygwin/lib;c:/cygwin/usr/lib;c:/cygwin/usr/local/lib
chdirC:/cygwin/bin
bash--login-i

5,重新启动Cygwin,进入alchemy目录,输入:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> ./config

6,输入下述命令开启alchemy

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->alc-on

Alchemy的开发环境就算配置完成了。

7,stringecho目录下,运行:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->gccstringecho.c–O3–Wall–swc–ostringecho.swc

一切顺利的话,将会生成stringecho.swc

8,下面来开发一个实例程序进行对stringecho.swc测试

1)新建一个新工程, ActionScript3工程或者 Flex工程都可以.

2)右键项目,选择属性“-->ActionScript BuildPath-->Library path,选择”Add SWC"将刚才编译出来的 stringecho.swc加入项目中,特别

注意的一点是Link Type选择“Merged into code",否则运行时会报错"无法找到类 Cmodule.stringecho::CLibInit"

3)代码如下:

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->package{
importflash.display.Sprite;

importcmodule.stringecho.CLibInit;
publicclassEchoTestextendsSprite
{
publicfunctionEchoTest()
{
varloader:CLibInit
=newCLibInit;
varlib:Object
=loader.init();
trace(lib.echo(
"foo"));
}
}
}

9,最后,我们来看下c语言写的源代码

1)首先,需要引入下述头文件:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->//HeaderfileforAS3interopAPIs
#include"AS3.h"

2)然后我们需要定义一个入口点,这里是main函数。main函数代码如下:

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->//entrypointforcode
intmain()
{
//definethemethodsexposedtoActionScript
//typedasanActionScriptFunctioninstance
AS3_ValechoMethod=AS3_Function(NULL,echo);
//constructanobjectthatholdsreferencestothefunctions
AS3_Valresult=AS3_Object("echo:AS3ValType",echoMethod);
//Release
AS3_Release(echoMethod);
//notifythatweinitialized--THISDOESNOTRETURN!
AS3_LibInit(result);
//shouldnevergethere!
return0;
}

首先定义了要暴露给外部ActionScript代码进行调用的方法,其类型是AS3_Function,然后构造一个对象,此对象拥有前面那个公开函数的引用,此对象构造完成后,则可以释放掉原来那个echoMethod对象,最好通知外部as程序里面的已经构造完毕。

3)下面来看下要暴露给外部的echo方法,它只是简单地接收一个字符串,再将其返回。程序中首先通过AS3_ArrayValue对传入的参数进行

解析,得到传入的字符串,若为空,则返回一个"null"字符串,否则返回原来的字符串。

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->//MethodexposedtoActionScript
//TakesaStringandechosit
staticAS3_Valecho(void*self,AS3_Valargs)
{
//initializestringtonull
char*val=NULL;
//parsethearguments.Expect1.
//passinvaltoholdthefirstargument,which
//shouldbeastring
AS3_ArrayValue(args,"StrType",&val);
//ifnoargumentisspecified
if(val==NULL)
{
char*nullString="null";
//returnthestring"null"
returnAS3_String(nullString);
}
//otherwise,returnthestringthatwaspassedin
returnAS3_String(val);
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics