我有一组Flex专有库(SWC中的ActionScript API),我想知道是否可以使用这些API 完全在HTML中构建UI来实现功能,而不是Flex基于UI /视图。如果是,那么方法(或一些例子)是什么?
这样做的一个原因是重新使用现有的Flex(域层)API(短期内),而不是像JavaScript那样重写它们。
答案 0 :(得分:0)
我不知道支持ActionScript的HTML呈现器(AKA浏览器)。您需要一个ActionScript代码的JavaScript / HTML端口才能在HTML / JavaScript Web应用程序中使用它。对于很多事情,我认为这非常困难。
答案 1 :(得分:0)
http://ui.ajax.org提供了一个JavaScript框架,在组件方面非常接近Flex。它甚至使用基于XML的布局框架,如MXML,称为AML。
它的绑定方式与使用{}
标记的Flex绑定方式几乎相同,请参阅:http://ui.ajax.org/#demos/features.smartbindings。我认为这就像你能得到的一样接近。
答案 2 :(得分:0)
据我所知,在HTML / JS中使用AS库的唯一方法是构建SWF,它通过ExternalInterface将这些库的API暴露给JS。
您可以使用JSInterface库,这比原始的ExternalInterface更方便。创建JS对象并将其属性映射到库API方法。像这样(AS代码):
var inited:Boolean = false;
try
{
JSInterface.initialize( this );
inited = true;
} catch( e:Error )
{
trace( "ERROR cannot initialize JSInterface: " + e.message );
}
if( inited )
{
var apiObject:JSDynamic = new JSDynamic( "Object" );
apiObject.apiFunc1 = library.func1;
apiObject.apiFunc2 = library.func2;
// etc
JSInterface.window.yourAPIName = apiObject;
}
此后,您将能够通过调用yourAPIName.apiFunc1()
,yourAPIName.apiFunc2()
等来访问JS代码中的库函数。
是否可接受或不强烈取决于您的库的性质。对于UI库,我确信如果不重写JS中的代码就不可能使用它们。