搜档网
当前位置:搜档网 › arcgis api for flex 开发入门

arcgis api for flex 开发入门

arcgis api for flex 开发入门
arcgis api for flex 开发入门

arcgis api for flex开发入门(一)环境搭建

arcgis api for flex是arcgis今年四月新推出来的进行RIA开发的flex库,是arcgis server9.3的一部分,使用 ArcGIS API for Flex可以基于ArcGIS Server建立漂亮的富互联网应用程序 rich internet applications (RIAs) ,优点是运行速度快,用户体验效果会比目前的WEBGIS好。

使用arcgis api for flex可以达到下面的效果

1,显示你的地图数据并可以和数据交互

2,在服务器上执行空间处理模型并显示结果

3,基于ArcGIS Online上的底图显示你自己的数据

4,根据属性或者位置查找你的数据并显示结果

5,查找地址并显示结果

6,用创新的方式可视化结果

7,创建mashups

具体详情可以参考

https://www.sodocs.net/doc/e612545799.html,/arcgis server/api s/flex/index.cfm?fa=samples上面有一些例子。

arcgis api for flex下载地址为

https://www.sodocs.net/doc/e612545799.html,/arcgis server/api s/flex/index.cfm?fa=home

里面有个download。

开发arcgis api for flex的程序需要flex环境的支持。

flex sdk3 的下载地址为

https://www.sodocs.net/doc/e612545799.html,/wiki/display/flex sdk/download?build=3.0.1.2012&pkgt ype=1

有了flex sdk3 和arcgis api for flex我们就可以开发RIA的flex程序了。

为了开发方便,我们最好使用flex builder,可以从adobe 的官方网站上下载试用版,下载地址为https://www.sodocs.net/doc/e612545799.html,/pub/flex/flex_builder/FB3_win.exe

安装好flex builder之后会安装flex sdk3 ,所以就不用自己手工安装了。

第一个arcgis api for flex程序。

1,打开flex builder,创建一个flex工程(名称Demo)。

2,右键单击工程名,选择属性,在属性对话框中选择flex build path ,选择libaray path

选项卡,单击add swc 把下载的arcgis api for flex添加进去,环境就配置好了。

3 ,在Demo.mxml文件中输入下面这代码

1.

2.

3. xmlns:mx="https://www.sodocs.net/doc/e612545799.html,/2006/mxml"

4. xmlns:esri="https://www.sodocs.net/doc/e612545799.html,/2008/ags"

5. pageTitle="Using ArcGIS API for Flex to connect to a cached ArcGIS Online

service"

6. styleName="plain">

7.

8.

9. url="http://server.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/ESRI_Str

eetMap_World_2D/MapServer" />

10.

11.

复制代码

编译,执行。第一个简单的ags flex程序就写好了。

效果如图2

arcgis api for flex开发入门(二)map 的创建

在flex中创建一个esri 的map ,你只需要使用标签就可以轻松完成。

标签中可以添加属性和响应事件的消息。

如下:

creati resize="EsriMapResize(event);"

extentChange="ESRIMapExtentChange(event);" mouseMove="OnDrawMouseMove(event)" /> width和 height定义的map 的大小,id="EsriMap" 唯一标识了这个map。

针对map 的消息也有很多,最常用的就是creationComplete,resize和鼠标消息了。

现在我们map有了,那么我们如何让她显示数据呢,这就需要给 标签添加一个layer 子标签。

在ags flex api中有以下几种类型的layer。

ArcGISDynamicMapServiceLayer :Allows you to work with a dynamic map service

resource exposed by the ArcGIS Server REST API.

ArcGISImageServiceLayer: Allows you to work with an image service resource exposed by the ArcGIS Server REST API.

ArcGISMapServiceLayer :The base class for ArcGIS Server map services.

ArcGISTiledMapServiceLayer :Allows you to work with a cached map service resource exposed by the ArcGIS Server REST API.

ArcIMSMapServiceLayer :Allows you to work with an ArcIMS image service.

GPResultImageLayer :Allows you to view a geoprocessing task result identified by jobId and parameterName.

GraphicsLayer: A layer that contains one or more Graphic features.

其中GraphicsLayer是支持客户端添加Graphic features的图层,需要在客户端表现的,或者交互操作中产生的要素都要加到这个layer 上。

下面,我们就添加一个ArcGISTiledMapServiceLayer和GraphicsLayer到map 上。

creati resize="EsriMapResize(event);"

extentChange="ESRIMapExtentChange(event);" mouseMove="OnDrawMouseMove(event)" >

其中标签中的url 属性为提供该服务的地址。

标签其中的spatialReference属性定义了该图层的空间参考系。

创建一个空间参考系,只需要使用标签就可以了,其中wkid 是esri已经定义好的空间草考系的ID,具体ID对应的空间参考可以在

https://www.sodocs.net/doc/e612545799.html,/help/9.3/arcgis server/api s/REST/index.html?gcs.html

中查找。如下为创建一个kid="4326"的空间参考系。

那么,我们如何定义我们想显示的范围呢?

很简单,在下面添加子标签,我们就可以来控制当前的显示范围了。

ymax="40.5"/>

其中x是经度,y 是纬度。

这样一个北京地区的map 就可以显示到我们面前了。

完整代码如下

1.

2.

3. xmlns:mx="https://www.sodocs.net/doc/e612545799.html,/2006/mxml"

4. xmlns:esri="https://www.sodocs.net/doc/e612545799.html,/2008/ags"

5. pageTitle="Using ArcGIS API for Flex to connect to a cached ArcGIS Online

service"

6. styleName="plain">

7.

8.

9.

10.

ymax="40.5"/>

11.

12.

13. url="http://server.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/ESRI_Str

eetMap_World_2D/MapServer" />

14.

15.

16.

复制代码

arcgis api for flex开发入门(三)地图浏览控件的使用

地图浏览包括放大,缩小,漫游,复位,上级窗口,下级窗口等

在arcgis api for flex中,esri 已经封装好了一个地图浏览,我们在程序中可

以直接使用,只需要几十行代码,就可以完成复杂的任务。

首先在上一讲的基础上创建一个Navigation 控件。使用标签

就可以了。

标签的map属性设置为你要控制的map,也就是说把控件绑到

map上。

然后我们创建一个工具条,用来做对map 浏览的控制

click="navToolbar.zoomToNextExtent()" enabled="{!

navToolbar.isLastExtent}"/>

button 的click 消息响应函数直接调用控件的函数就可以了

。放大,缩小,漫游调用的都是激活工具的函数。剩余3个button的响应函数分别调用控件zoomToPrevExtent,zoomToNextExtent,zoomToFullExtent函数就ok了。

就是这么简单,我们来看看效果。

1.

2.

3. xmlns:mx="https://www.sodocs.net/doc/e612545799.html,/2006/mxml"

4. xmlns:esri="https://www.sodocs.net/doc/e612545799.html,/2008/ags"

5. pageTitle="Using ArcGIS API for Flex to connect to a cached ArcGIS

6.Online service"

7. styleName="plain">

8.

9.

10.

11.

13.

15.

17.

19.

20.click="navToolbar.zoomToNextExtent()" enabled="{!

21.navToolbar.isLastExtent}"/>

22.

23.

24.

25.

26.

27.ymin="39.5" xmax="116.5" ymax="40.5"/>

28.

29.

30.

31.url="http://server.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/ESRI_StreetMap

32._World_2D/MapServer" />

33.

34.spatialReference="{sr}"/>

35.

36.

复制代码

arcgis api for flex开发入门(四)Darw控件的使用

arcgis api for flex在客户端提供了强大的绘制功能,可以通过简单的调用来

完成复杂的绘制工作,达到很好的交互效果,提供完美的用户体验,感觉不出来

是在web上操作。

下面我们就一起来实现绘制功能。

首先,我们需要定义一个draw 控件,使用标签来完成创建工作,如下面的代码

graphicsLayer="{myGraphicsLayer}" />

标签的map属性要绑定要你需要绘制的map上。graphicsLayer属性要绑定到一个graphicsLayer上,所有绘制的结果都会添加到graphicsLayer上,graphicsLayer的创建可以参考第二讲的内容。

控件创建好了,我们下面就可以调用这个控件的函数来完成绘制任务。

和上一讲一样,我们创建一个controlbar 来响应这些绘制的操作。

在button 的click 响应函数里,我们只需要调用draw控件的activate函数来激活当前绘制工具就可以了。

当你不想绘制的时候,调用deactivate函数就ok了,释放掉当前选择的绘制工具

so easy,enjoy it;

效果:

完整代码:

1.

2.

3. xmlns:mx="https://www.sodocs.net/doc/e612545799.html,/2006/mxml"

4. xmlns:esri="https://www.sodocs.net/doc/e612545799.html,/2008/ags"

5. pageTitle="Using ArcGIS API for Flex to connect to a cached ArcGIS

6.Online service"

7. styleName="plain">

8.

9.graphicsLayer="{myGraphicsLayer}" />

10.

11.

12.

14.

16.

18.

20.

22.

24.

26.

27.

28.

29.

30.ymin="39.5" xmax="116.5" ymax="40.5"/>

31.

32.

33.

34.url="http://server.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/ESRI_StreetMap

35._World_2D/MapServer" />

36.

37.spatialReference="{sr}"/>

38.

39.

复制代码

arcgis api for flex开发入门(五)查询

在gis中,针对要素的查询是一个最基本的操作,也是最常用的操作之一。

下面我们介绍如何使用arcgis api for flex来查询我们需要的东西。

要在arcgis api for flex中进行查询操作,首先需要定义一个查询任务面板。

使用标签就可以了。

url="http://sampleserver1.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/Demogra phics/ESRI_Census_USA/MapServer/5">

text="{qText.text}"

returnGeometry="true"

spatialRelati>

MED_AGE

POP2007

id 唯一标识这个查询任务,url告诉查询面板去哪查。

定义一个查询,text是你需要查询的东西,子标签告诉Query 查询的结果返回哪些字段的内容。

QueryTask 定义好之后,我们还需要在界面上来调用这个QueryTask。因此我们定义一个文本输入框和一个查询按钮

layout="horizontal" backgroundColor="0xB2BFC6" borderStyle="solid">

text="Cali for nia"/>

文本输入框用来输入你想要查询的内容,button 用来执行查询的动作。

那么这个doQuery()怎么实现呢?我们在mxml的标签中已经无法实现,这就需要引入activescript脚本。我们需要在mxml中使用activescript脚本历来编写代码,实现我们想要的功能。

关于activescript的语法大家可以参考activescript的相关书籍。

要在mxml文档中插入activescript,需要使用标签

]]>

activescript 是一种类java 语言,它本身有一个AVM,把activescript编译成java 的代码,然后再通过JVM转换成字节码执行。

我们下面就开始实现doQuery();

首先,我们要用import 指令引入我们需要的命名空间,和java基本一样

import com.esri.ags.Graphic;

import com.esri.ags.tasks.FeatureSet;

import com.esri.ags.tasks.Query;

import mx.controls.Alert;

import mx.rpc.AsyncResponder;

]]>

然后我们定义doQuery()函数:注意activescript代码要放到标签中

private function doQuery() : void

{

queryTask.execute( query, new AsyncResponder( onResult, onFault ));

在doQuery()函数中直接调用了queryTask的execute方法,这是一个异步调用。成功响应onResult函数,失败则响应onFault函数。

查询已经写好了,那么我们怎么得到查询的结果呢?得到结果肖恩么表现呢?

这就需要我们在onResult函数中做一些事情了。

首先,定义onResult函数

function onResult( featureSet : FeatureSet, token : Object = null ) : void

{

var displayFieldName : String =

featureSet.displayFieldName;

for each ( var myGraphic : Graphic in

featureSet.features )

{

// ToolTip

myGraphic.toolTip = "The 2007 population of " + myGraphic.attributes[displayFieldName] + " was "

+ myNumberFormatter.for mat

(myGraphic.attributes.POP2007)

+ "\nMedian Age: " +

myGraphic.attributes.MED_AGE + ".";

// show on map

myGraphicsLayer.add( myGraphic );

}

}

查询结果返回一个 FeatureSet,我们现在遍历这个 FeatureSet,然后把每个feature 绘制到GraphicLayer上。

如果查询失败了怎么办呢,我们是不是要弹个东西出来告诉用户呢?

这就需要我们在onFault函数中做一些工作

function onFault( info : Object, token : Object = null ) : void

{

Alert.show( info.toString() );

}

}

我们弹个对话框出来告诉用户,查找失败啦!

ok 到此,一个简单的查询工具就做好了下面我们看看效果

enjoy it!

源代码:

1.

2.

3. xmlns:mx="https://www.sodocs.net/doc/e612545799.html,/2006/mxml"

4. xmlns:esri="https://www.sodocs.net/doc/e612545799.html,/2008/ags"

5. pageTitle="Query Task"

6. >

7.

8.

9. import com.esri.ags.Graphic;

10. import com.esri.ags.tasks.FeatureSet;

11. import com.esri.ags.tasks.Query;

12. import mx.controls.Alert;

13. import mx.rpc.AsyncResponder;

14.

15. private function doQuery() : void

16. {

17. queryTask.execute( query, new AsyncResponder( onResult,

18.onFault ));

19. function onResult( featureSet : FeatureSet, token :

20.Object = null ) : void

21. {

22. var displayFieldName : String =

23.featureSet.displayFieldName;

24.for each ( var myGraphic : Graphic in

25.featureSet.features )

26. {

27. // ToolTip

28. myGraphic.toolTip = "The 2007 population of "

29.+ myGraphic.attributes[displayFieldName] +

30." was "

31.+ myNumberFormatter.for mat

32.(myGraphic.attributes.POP2007)

33.+ "\nMedian Age: " +

34.myGraphic.attributes.MED_AGE + ".";

35. // show on map

36. myGraphicsLayer.add( myGraphic );

37. }

38. }

39. function onFault( info : Object, token : Object = null

40.) : void

41. {

42. Alert.show( info.toString() );

43. }

44. }

45. ]]>

46.

47.

https://www.sodocs.net/doc/e612545799.html,eThousandsSeparator="true"/>

49.

50.

51.url="http://sampleserver1.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/Demogra

52.phics/ESRI_Census_USA/MapServer/5">

53.

54. text="{qText.text}"

55. returnGeometry="true"

56. spatialRelationship="esriSpatialRelEnvelopeIntersects">

57.

58. MED_AGE

59. POP2007

60.

61.

62.

63.

https://www.sodocs.net/doc/e612545799.html,yout="horizontal" backgroundColor="0xB2BFC6" borderStyle="solid">

65.

66.text="Cali for nia"/>

67.

68.

69.

70.

71.

72.

73.

74.

75.url="http://server.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/NPS_Physical_W

76.orld_2D/MapServer" />

77.

78.

79.

复制代码

注:这个arcgis api for flex samples里面的一个例子,可以在安装包的samples 里面找到

arcgis api for flex开发入门(六)identify

identify 是GIS中比较常用的工具之一,在arcgis api for flex中esri为我们提供了一个Identify Task来轻松完成identify 的功能。

首先,还是使用标签来创建一个Identify Task。

identifyComplete="identifyCompleteHandler(event)"

url="http://sampleserver1.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/Special

ty/ESRI_StatesCitiesRivers_USA/MapServer"/>

当identifyTask执行完毕的时候响应identifyComplete消息,我们就可以把identify的结果做一些处理,比如添加到Graphic layer 上。

在执行identify之前,首先要对identify的参数设置一下,我们需要一个IdentifyParameters对象。下面的代码是AS3脚本的代码,用来创建IdentifyParameters和identify执行。

var identifyParams : IdentifyParameters = new IdentifyParameters();

identifyParams.returnGeometry = true;

identifyParams.tolerance = 3;

identifyParams.width = 600;

identifyParams.height = 550;

identifyParams.geometry = geometry;

https://www.sodocs.net/doc/e612545799.html,yerOption =

https://www.sodocs.net/doc/e612545799.html,YER_OPTION_ALL;

identifyParams.mapExtent = map.extent; identifyTask.execute( identifyParams );

其中tolerance是容差半径

width:Width of the map currently being viewed in pixels.

height : Height of the map currently being viewed in pixels

geometry 是用来做identify的几何,常用的有点选,矩形选择,多边形选择等

参数设置好了之后,直接调用identifyTask.execute( identifyParams );就ok了。

那么我们用来做identify的几何怎么来呢,在什么时候去做Identify呢?

首先回答第一个问题,做identify的几何我们可以利用第四讲中draw控件使用鼠标交互来获得,这也是RIA的特点之一。

那么在什么时候做identify呢?

就在做identify的几何画完之后做,嘿嘿,等于没说嘛,当然要在画完了就做:-D 现在我们就来完成上面的工作

定义一个draw控件

graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">

记得添加上drawEnd消息的响应函数drawEndHandler(event),这个事件会在draw 之后响应。

用as3脚本实现drawEndHandler和identifyCompleteHandler函数

private function drawEndHandler(event rawEvent):void

{

var geometry : Geometry = event.geometry;

var identifyParams : IdentifyParameters = new IdentifyParameters();

identifyParams.returnGeometry = true;

identifyParams.tolerance = 3;

identifyParams.width = 600;

identifyParams.height = 550;

identifyParams.geometry = geometry;

https://www.sodocs.net/doc/e612545799.html,yerOption =

https://www.sodocs.net/doc/e612545799.html,YER_OPTION_ALL;

identifyParams.mapExtent = map.extent; identifyTask.execute( identifyParams );

private function identifyCompleteHandler

(event:IdentifyEvent):void

{

for each (var result:IdentifyResult in

event.identifyResults)

{

myGraphicsLayer.add(result.feature);

}

}

ok ,我们的工作大致就完成了,下面我们来看一下效果

1.

2.

3. xmlns:mx="https://www.sodocs.net/doc/e612545799.html,/2006/mxml"

4. xmlns:esri="https://www.sodocs.net/doc/e612545799.html,/2008/ags"

5. layout="absolute"

6. pageTitle="Identify Features on the Map"

7. >

8.

9.

10. import com.esri.ags.Graphic;

11. import com.esri.ags.events.DrawEvent;

12. import com.esri.ags.events.IdentifyEvent;

13. import com.esri.ags.geometry.Geometry;

14. import com.esri.ags.symbol.Symbol;

15. import com.esri.ags.tasks.IdentifyParameters;

16. import com.esri.ags.tasks.IdentifyResult;

17. import com.esri.ags.toolbars.Draw;

18. private function drawEndHandler(event:DrawEvent):void

19. {

20. var geometry : Geometry = event.geometry;

21. var identifyParams : IdentifyParameters = new

22.IdentifyParameters();

23. identifyParams.returnGeometry = true;

24. identifyParams.tolerance = 3;

25. identifyParams.width = 600;

26. identifyParams.height = 550;

27. identifyParams.geometry = geometry;

28. https://www.sodocs.net/doc/e612545799.html,yerOption =

https://www.sodocs.net/doc/e612545799.html,YER_OPTION_ALL;

30. identifyParams.mapExtent = map.extent;

31.

32. identifyTask.execute( identifyParams );

33. }

34.

35. private function identifyCompleteHandler

36.(event:IdentifyEvent):void

37. {

38.for each (var result:IdentifyResult in

39.event.identifyResults)

40. {

41. myGraphicsLayer.add(result.feature);

42. }

43. }

44. ]]>

45.

46.

47.

48.graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">

49.

50.

51.

52. identifyComplete="identifyCompleteHandler(event)"

53.

54.url="http://sampleserver1.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/Special

55.ty/ESRI_StatesCitiesRivers_USA/MapServer"/>

56.

57.

59.

60.

61.

62.url="http://sampleserver1.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/Special

63.ty/ESRI_StatesCitiesRivers_USA/MapServer" />

64.

65.

66.

67.

复制代码

arcgis api for flex开发入门(七)Geometry service 的使用

Geometry service 顾名思义,就是提供针对几何层级的服务,比如说Project,Simplify , Buffer,Areas And Lengths , Lengths 等

详细信息可以到下面的地址去看一下

http://sampleserver1.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/Geometry/Geo metryServer

这个网址发布了上面5个Geometry service。

下面我们就来讲解如何在你的flex地图中使用Geometry service,我们拿最常用buffer来做例子。

首先定义一个GeometryService

url="http://sampleserver2.arcgis https://www.sodocs.net/doc/e612545799.html,/ArcGIS/rest/services/Geometr

y/GeometryServer"/>

id 唯一标识了这个GeometryService,url指定了GeometryService的地址

和identify工具类似,要进行buffer操作我们先创建一个需要做buffer的几何,然后定义一个BufferParameters ,然后执行buffer操作,最后将buffer的结果绘制到GraphicsLayer上。

下面我们介绍一下BufferParameters参数的意义distances为buffer半径,features 为需要做buffer的要素集合,unit为单位bufferSpatialReference为buffer操作时的空间参照系。

设置完参数后,要添加buffer完成时间的EventListener,当buffer完成后我们就可以处理这个buffer的结果了,如下面AS3脚本

var bufferParameters : BufferParameters = new BufferParameters(); bufferParameters.features = [point]; bufferParameters.distances = [3000];

bufferParameters.unit = BufferParameters.UNIT_METER; bufferParameters.bufferSpatialReference = new SpatialReference( 02113); myGeometryService.addEventListener (GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler); myGeometryService.buffer( bufferParameters );

关键的一点,bufferParameters.features参数设置的features 一定要有空间参

考系,不然buffer不成功。

其余的绘制操作,将结果绘制到GraphicsLayer上的操作和上一讲基本相同,就不再讲了。

下面看一下最后的效果

1.

2. xmlns:mx="https://www.sodocs.net/doc/e612545799.html,/2006/mxml"

3. xmlns:esri="https://www.sodocs.net/doc/e612545799.html,/2008/ags"

4. layout="absolute"

5. >

6.

7.

8. import com.esri.ags.Graphic;

9. import com.esri.ags.events.DrawEvent;

10. import com.esri.ags.events.IdentifyEvent;

Flex打印问题

Flex打印问题 使用两个类解决打印问题:FlexPrintJob和PringDataGrid。 ? FlexPrintJob。这个类需要在实例化之后用作要打印对象的容器。 ? PringDataGrid。是DataGrid的一个子类,用来打印必须以网格或表格形式显示的数据,支持多页面打印。 简单的打印实例: < ?xml version="1.0" encoding="utf-8"?> < mx:Application xmlns:mx=https://www.sodocs.net/doc/e612545799.html,/2006/mxml layout="absolute"> < /mx:Application> 见源代码:printDemo.mxml。 创建单独的Print容器: < ?xml version="1.0" encoding="utf-8"?> < mx:Application xmlns:mx=https://www.sodocs.net/doc/e612545799.html,/2006/mxml layout="absolute" creationComplete="bookDataCall.send()">

Flex与Twaver资料

TWaver Flex数据模型 TWaverFlex的基本数据元素是twaver.IData,基本数据容器定义为twaver.DataBox,基于这两类基本元素,TWaverFlex预定义了一系列业务对象,视图网元和管理容器,例如告警(twaver.IAlarm)和告警容器(twaver.AlarmBox),图层(twaver.ILayer)与图层管理容器(https://www.sodocs.net/doc/e612545799.html,yerBox),拓扑网元(twaver.IElement)和拓扑管理容器(twaver.ElementBox)...... 数据元素结构图 数据管理容器结构图 其中拓扑管理容器(twaver.ElementBox)整合了其他几种容器,提供了丰富的拓扑元素(Dummy, Node, Link, Bus, ShapeNode, ShapeLink, Follower, Rack, Shelf, Slot, Card, Port, Grid, Group, SubNetwork......),为网管界面开发提供了强大的设计模型和业务功能的基础支持。 TWaver Flex数据元素 TWaverFlex以twaver.IData为最基本的数据单元,扩展定义了一系列具有图形和业务意义的数据类型,包括IAlarm, ILayer, IElement... twaver.IData

IData是TWaverFlex的数据元素基类接口,twaver.Data是对其实现类,定义了id, name, icon, toolTip, parent, children等基本属性,对事件派发做了封装,并支持xml数据的导入导出,为TWaver各平台间数据的可序列化奠定了基础。 Data继承于flash.events.EventDispatcher,这使他具有事件派发和监听的功能,可以通过调用下面的方法派发事件或者添加实现监听器: flash.events.EventDispatcher#public dispatchEvent(event:Event):Boolean flash.events.EventDispatcher#addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void Data还实现了twaver.IData接口,实现了对属性变化事件的派发和监听 function dispatchPropertyChangeEvent(property:String, oldValue:Object, newValue:Object):Boolean; function addPropertyChangeListener(listener:Function, priority:int = 0 , useWeakReference:Boolean = false):void; function removePropertyChangeListener(listener:Function):void; 此外,Data中还定义了其他功能函数 function get childrenCount():int; function get hasChildren():Boolean; function isDescendantOf(data:IData):Boolean; function isParentOf(data:IData):Boolean; function isRelatedTo(data:IData):Boolean; function toXML(context:XMLContext, newInstance:IData):void; function parseXML(context:XMLContext, xml:XML):void; function setPropertyValue(property:String, value:Object):void; function getPropertyValue(property:String):Object; 下面分别介绍各个实现类 twaver.ILayer

flex4.0标签

Flex 4 读取xml文件,xml文件的格式: 根节点 叶子 信息 test-left test-middle fx:Binding可以使用 标签将某个对象的数据绑定到另一个对象。 可以使用 标签在 MXML 文件中定义内联单元格渲染器或单元格fx:Component 编辑器。 fx:Declarations可以使用 标签声明当前类的非默认、不可视属性。 可以在 标签内使用 标签定义图形子对象,然后fx:Definition 可以将子对象用于应用程序的其他部分中。 fx:DesignLayer 标签仅供内部使用。 fx:Library可以使用 标签声明当前类的非默认、非可视属性。 fx:Metadata使用 标签可以在 MXML 文件中插入 metadata 标签。 fx:Model可以使用 标签在 MXML 中声明数据模型。 fx:Private可以使用 标签提供有关 MXML 或 FXG 文档的元数据信息。 作为视图状态更改的一部分,可以使用 标签更改某个组件的父容fx:Reparent 器。 fx:Script可以使用 标签定义 ActionScript 代码块。 fx:Style可以使用 标签定义适用于当前文档及其子项的样式。 fx:XML可以使用 标签在 MXML 中声明 XML 格式的数据模型。 可以使用 标签在 MXML 中通过文本格式的模型创建 E4X XMLList fx:XML List 对象。 fx:Binding在使用标签时,需要提供源属性和目标属性。可以使用标签将视图或用户界面与模型完全分离。通过标签,您还可以将不同的source 属性绑定到同一个destination 属性。

Flex3.0面试题

1.as2与as3.的最主要区别是什么? 答:首先,as2和as3是完全不同的语言,几乎没有兼容性可言。as2编译用的AVM1虚拟机,as3用的AVM2,速度快,提供了一些基础异常处理。 as3是纯的OOP,强类型语言。as2不是。具体的差别有太多太多。 2.flex的开发框架有哪些,它们有什么优缺点? 答:最常见的当然是Cairngorm、Puremvc了,此外还有Mate,Swiz等等,据说被广泛应用的已经有10几款了。Cairngorm作为Adobe官方出品,有着贵族血统的它比较全面,是这些框架中已知bug最少的,但是基于他的应用相对臃肿复杂一些,需要对每个可以被触发的事件写一个对应的Command,编码量巨大,并且单元测试很不容易,不适合敏捷开发。Puremvc应该是现在用的最多的as 框架了。比较完善、并且与Cairngorm相比,更适合中小型应用的开发,它与Cairngorm一样,也是以MVC模式为中心,并以Fa?ade作为中央存储器的单件类的形式进行开发的。说下Mate,它是一个比较奇怪的框架,是基于标签的事件驱动型的。也就是说你不能再随意的写as类的,在使用Mate的情况下,只能用MXML来做这些事情。Swiz是Mate的孪生兄弟,长的挺像,没具体用过,不大了解。 3.在flex开发中,很多代码都写在mxml文件里,为了做到mvc模式,你是怎么处理的。 我认为mxml并不影响mvc模式啊。分两种情况来讨论,首先,是自己创建整个应用结构的时候,那我们可以手动将UI所在的mxml归为一类,然后由Mediator去操作或者说控制这些组件既可了,然后Mediator又统一交给Controller去操作。如果采用其他框架来进行开发的话,那就更不用来考虑这个问题了,像Cairngorm、Puremvc之类的框架已经很好的为我们解决了这些问题。只要按照它们的使用规范来进行开发,自然没有问题。 4.如果发生内存泄露,你是如何解决的? 在profile观察中已经内存泄漏是没有很好的解决办法的,至少我不知道,我能做的只是尽量去避免这种情况的发生,比如说注意不要循环引用,特别是在使用Timer的时候要格外注意,不要忘记全局对象上的引用的清除,在创建控制器和模型的时候要注意一定要使用单件模式。在addEventListener时候尽量采用弱引用、自引用、或者子对象引用,以避免内存泄漏。 5。as3.0垃圾回收器是如何工作的? flash player 8之前采用的是引用计数法,在flash player 8 之后用的是标记法,简单的说就是:从应用的根节点开始,遍历所有其上的引用,标记每个它所发现的 对象。然后迭代遍历每个被标记的对象,标记它们的子对象。这个过程第归进行,直到Player遍历了应用的整个对象树并标记了它所发现的每个东西。在这个过

JFLex用户手册中文版

JFLEX词法分析 安装与配置 1.下载jflex-1.4.3.zip,解压缩到本地目录(c:/jflex)。 2.找到jflex\bin\jflex.bat文件,配置JAVA HOME和JFLEX HOME 3.把x:\jflex\bin写入系统环境变量path中 运行 可视化方式 直接运行jflex\bin\jflex.bat文件,打开可视化界面操作即可。 命令行方式 配置 把x:\jflex\bin以及x:\jflex\lib\ JFlex.jar配置到系统环境变量的CLASSPATH中。 格式 java JFlex.Main 运行参数 -d 生成文件的输出目录 --skel 使用外部的骨架文件生成扫描器类,它大多数情况下用于JFLEX的维护和低级别定制。只有在你知道自己正在作什么时候才使用它。JFLEX的源码中带有一个骨架文件,预先编写骨架

文件才能使用此命令。 --nomin 在扫描器生成的过程中,跳过DFA简化步骤。 --jlex 完全兼容jlex --dot 为NFA, DFA and minimised DFA生成扩展名为.dot的graphviz图型文件。该参数还在最初阶段,尚未完全实现。 --dump 在控制台显示NFA转换表,初始DFA和最简DFA。 --verbose or –v 显示生成过程信息。 --quiet or –q 仅显示生成错误信息 --time 显示代码生成耗时信息(不十分精确) --version 打印JFLex版本号

Flex快速入门

Flex 快速入门 无衣 摘自https://www.sodocs.net/doc/e612545799.html,/cn/ (版权归原作者所有)

Flex 快速入门: 使用 MXML 和 ActionScript 进行编码 Adobe? 将 Flex 实施为 ActionScript 类库。 该类库包含组件 (容器和控件)、管理器类、数据服务类和所有其他功能的类。 您通过将 MXML 和 ActionScript 语言与该类库一起使用 来开发应用程序。 MXML MXML 是用于为 Adobe? Flex? 应用程序进行用户界面组件布局的 XML 语言。 您还使用 MXML 来显式定义应用程序的非可视方面, 例如访问服务器端数据源和用户界面组件与数据源之间的数据绑定。 例如, 您通过使用下面的 MXML 语句, 使用 标签来创建 Button 控件的实例: 您设置 id 属性以赋予 Button 实例一个唯一的名称, 以后可以使用该名称引用到它。 label 属性设置在 Button 实例上显示的标签的文本。 下面的示例显示创建显示 Button 控件的 Flex 应用程序所需的完整代码: 在编写 Flex 应用程序之后, 您必须使用 Flex 编译器来编译它。 Flex 编译器是称为 mxmlc 的一个很小的可执行文件, 处于 Flex 2 安装文件夹下的 Flex SDK 2.0\bin 文件夹中。 提示: 确保 Flex 2 installation folder\Flex SDK 2.0\bin 文件夹处于您的系统的路径中。 让 Flex 编译器处于您的路径中, 使您不管当前处于哪个文件夹中, 都可以从命令行调用它。 说明 1.在您喜爱的文本编辑器 (如, 记事本) 中创建一个新文件并将它另存为 MyFirst.mxml。 2.从前面的示例中将代码输入到 MyFirst.mxml 中并保存您的文件。 3.通过选择“开始”>“所有程序”>“附件”>“命令提示符”, 打开命令窗口。 4.将您的当前目录更改为包含您在步骤 1 中保存的 Flex 应用程序的文件夹。 5.键入下面的命令来调用 Flex 编译器: mxmlc --strict=true --file-specs MyFirst.mxml 以双短划线开头的命令字符串中的项目被称为编译器选项, 它们被用于定义 Flex 编译

flex开发规范文档

Flex开发规范 开发规范对可以使用项目中所有的文件进行统一,增加可读性,减少错误出现的几率。规范的编码减少人员变动带来的维护成本,可以让程序员尽快而彻底的理解新的代码。 为了方便维护,特定flex开发规范,每个人必须执行。 1.总体要求 所有As功能代码部分,每个方法需要有相应的注释。核心功能代码要求每个处理都要有注释。注释内容包括:方法功能用途,编写人,时间。 所有标签代码,需进行代码格式化。(myeclipse中的格式化)。 对于后期修改的代码,要注明为后期修改,并写明具体修改时间,修改人。 项目开发必须严格按照开发规范进行编写。 2.命名规则 2.1.项目结构及文件夹命名规则 文件夹命名需小写。除特殊运用框架的工程之外,项目中的文件目录结构应为: com >>assets 图片文件夹 >>common 常用组件文件夹 >>styles 样式文件夹 >>configs 配置文件夹 >>其他业务文件夹 2.2.类命名规则 类命名首字母需大写,取名需按照业务功能的字面意思进行取名。例如LoginPage。所有弹出页面均要加上XXXPop后缀。 2.3.配置文件命名规则 所有配置文件需按字面意思进行命名,首字母大写。例如MapConfig.xml。若文件是某个类专用读取属性于地址目录的配置文件,则要与该类同名。例如HireLine.mxml与HireLine.xml。

2.4.方法命名 除构造方法外,一般方法首字母需小写,后采用驼峰式命名方法,方法命名需体现方法功能。禁止方法名超长。标准应为如下:onMapClick():void, querryCarInfo():void, 2.5.类变量命名 变量命名需简短,明意。首字母需小写,并采用驼峰式命名方法。对于特定关键代码的变量命名后缀需与参照其类型名。例如集合与数组:messageArr。Object类为:infoObj。事件为:clickEvt。字符串为:querryStr等。 2.6.临时变量命名 尽量不与类变量同名,命名方法参照类变量,循环体内的自增变量需采用I,j,k,m,n,也可写成index。对于引用自定义类的变量,命名取该类型的缩写或取其名称的一部分。例如自定义类为CarInfoSearchPop,则变量名为cisp或carpop。 2.7.Bean命名 采用驼峰命名方法,命名需体现业务意思,以Bean结尾,例如:CarInfoBean。 2.8.Remote方法命名 Remote方法命名需与Java端方法同名。 2.9.标签命名 标签的命名所有字母都需大写 3.注释 3.1.类注释 因类包含mxml与纯class,所以均在script中进行注释。因项目中类较多,因此注释可简化为以下项: /**

Flex完全自学入门手册

Flex入门教程 编写日期:2009-02 作者:Dason 主要讲3个主题: 1.Flex是什么,用途和前景; 2.Flex Builder基础; 3.MXML基础; 现在进入第1个主题: 首先我们要明白,flex不是专门用来做网页的,它主要是用来做RIAs的 RIAs=Rich Internet Applications 富英特网应用程序 Flex现在虽然是2.0,以前是1.0和1.5,但是不要担心1.0和1.5版本自己没有用过,因为2.0版本才是Flex真正的开始,首先,Flex2.0的技术基础很高,采用Action Script3.0为编程核心,以FlashPlayer9.0为平台 它与以前版本的区别是 FlashPlayer9.0采用全新的虚拟机,运行速度是8.0的10倍以上 Flash8.0和Flex1.0,1.5,都是Action Script2.0用的FlashPlayer8.0,在性能上,跟Flex2.0的Action Script3.0和FlashPlayer9.0相差太远了 我们现在处于RIAs浏览器时代,意思是,我们用Flex做的程序,必须要用浏览器打开,以网页的形式发布,明年,我们将步入下一个RIAs时代――桌面RIAs时代,我们现在所有用flex2.0做的程序,明年都可以被重新发布成桌面应用程序,就跟我们现在用的软件是一样了,到时候,我们的程序不再被浏览器限制了,flex能做的程序很多,比如QQ这样的即时聊天软件、论坛、股票软件、网络视频聊天、等等。你能想到的基本都能做出来,Flex的前景是一片明朗的,而且越往后越会被广泛采用,这一切都从Flex2.0开始,所以,对于我们来说,这是个前所未有的好机会。现在学flex的人很少很少,如果你等到他已经大面积普及,那就没有竞争力了。 好,现在提问时间,马上要进入下一主题: Flex是纯面向对象语言,C是面向过程语言,ActionScript3.0相对2.0,改动太大了,如果有2.0基础,对3.0帮助不大,所以,如果你第一次接触的就是3.0,也不要紧,3.0删除了很多2.0的东西,而且增加了很多新类,3.0跟JAVA基本没什么区别了,所以,有JAVA基础的人,学起来更快。 AS3的语法跟JAVA一样,有库、包、类、接口这些概念,两者的本质区别是java可以做软件,但局限性很大,比如java界面很差,很多功能比较古老等等 今天第2个主题――Flex Builder2基础 1、打开Flex Builder2 A.新建Flex Project-

词法分析器flex中文手册

FLEX 中文手册 这是flex手册的部分中文翻译,仅供参考 ?一些简单的例子 ?输入文件的格式 ?模式 ?如何匹配输入 ?动作 ?生成的扫描器 ?开始条件 ?文件结尾规则 ?与yacc一起使用 一些简单的例子 首先给出一些简单的例子,来了解一下如何使用flex。下面的flex输入所定义的扫描器,用来将所有的“ username”字符串替换为用户的登陆名字: %% username printf("%s", getlogin()); 默认情况下,flex扫描器无法匹配的所有文本将被复制到输出,所以该扫描器的实际效果是将输入文件 复制到输出,并对每一个“username”进行展开。在这个例子中,只有一个规则。“username”是模式 (pattern),“printf”是动作(action)。“%%”标志着规则的开始。 这里是另一个简单的例子: int num_lines = 0, num_chars = 0; %% \n ++num_lines; ++num_chars; . ++num_chars; %% int main(void) { yylex(); printf("# of lines = %d, # of chars = %d\n", num_lines, num_chars);

} 该扫描器计算输入的字符个数和行数(除了最后的计数报告,并未产生其它输出)。第一行声明了两 个全局变量,“num_lines”和“num_chars”,可以在yylex()函数中和第二个“%%”后面声明的main()函数中 使用。有两个规则,一个是匹配换行符(“\n”)并增加行数和字符数,另一个是匹配所有不是换行符的 其它字符(由正规表达式“.”表示)。 一个稍微复杂点的例子: /* scanner for a toy Pascal-like language */ %{ /* need this for the call to atof() below */ #include %} DIGIT [0-9] ID [a-z][a-z0-9]* %% {DIGIT}+ { printf( "An integer: %s (%d)\n", yytext, atoi( yytext ) ); } {DIGIT}+"."{DIGIT}* { printf( "A float: %s (%g)\n", yytext, atof( yytext ) ); } if|then|begin|end|procedure|function { printf( "A keyword: %s\n", yytext ); } {ID} printf( "An identifier: %s\n", yytext );

Flex教程

Jquery flexigrid使用 相关技术:struts2.1.6+spring+hibernate+jquery+flexigrid+thickbox+mysql 主要的js文件:jquery.js,flexigrid.js,query.js,thickbox.js,util.js 其中: util.js是扩展flexigrid的功能,如条件查询用到的getQuery属性。query.js是自定义的flexigrid界面显示和函数触发文件。 Jar包:

使用过程: Struts2 jar只能用 2.1.6,web.xml中配置: struts-tags /WEB-INF/lib/struts2-core-2.1.6.jar 用struts2-core-2.0.14会报错: org.apache.jasper.JasperException: Unable to initialize TldLocationsCache: null

Jsp页面: 引入jquery、flexigrid插件文件以及test.js,body中编写:

在js文件中使用flexigrid创建页面: $(document).ready( function() { $("#grid").flexigrid( { // url :'jsp/query/json.json', url : 'getPaginationAction.action', dataType :'json', colModel : [ { display :'编号', name :'id', width :60, sortable :true, align :'center' }, { display :'姓', name :'firstname', width :120, sortable :true, align :'left' }, { display :'名', name :'lastname', width :120, sortable :true, align :'left' }, { display :'操作', name :'opt', width :120, sortable :true, align :'left', process :operate } ], searchitems : [ {

FLEX学习心得

FLEX学习心得 1,开发webgame你所要具备的 一、数据结构、设计模式、框架应用、良好的OO思想。 二、对socket/amf/remoting/shareobject/webservice等了解 三、各开源库(PV3d,Box2d等),但一般做策略型webgame不太需要,策略型webgame关注的是第一点 如果想做做小游戏,可看 make thing move之后看AdvancED_ActionScript 3.0 2,基于socket连接的安全沙箱问题的处理 https://www.sodocs.net/doc/e612545799.html,/xuxiangwin/archive/2009/07/07/4324218.aspx 大概就这个,但是我这里始终不行,有待后续补充 补充:https://www.sodocs.net/doc/e612545799.html,/club/thread-6471-1-5.html 3,FLEX解析XML的2种方式。有表情 https://www.sodocs.net/doc/e612545799.html,/blog/381820 4,FLEX控件样式和控件的使用 1).不知道控件有什么样式设置?看它:https://www.sodocs.net/doc/e612545799.html,/flex3/consulting/styleexpl orer/Flex3StyleExplorer.html 2).有控件不知道怎么用?看它:https://www.sodocs.net/doc/e612545799.html,/flex3/componentexplorer/explorer. html 5,FLEX中文例子 https://www.sodocs.net/doc/e612545799.html,/ 6,AIR的创建发布安装教程 https://www.sodocs.net/doc/e612545799.html,/AIR/thread-2727-1-1.aspx 7,Adobe AIR 迷你教程-- 监测网络状态,离线/在线应用程序的实现 https://www.sodocs.net/doc/e612545799.html,/Share/thread-2731-1-1.aspx 8,FLEX 45°视角游戏地图编辑器 https://www.sodocs.net/doc/e612545799.html,/club/thread-3334-1-1.html 9,RGP游戏基础45地图寻路和地图切换完整例子 https://www.sodocs.net/doc/e612545799.html,/club/viewthread.php?tid=2286&page=1#pid6532

最新Nature Made TripleFlex Triple Flex 中文说明书资料

Nature Made 天然制造 Nature Made TripleFlex Triple Flex 三倍维骨力关节宝 GLUCOSAMINE 氨基葡萄糖;氨糖1500 毫克 CHONDROITIN 软骨素;软骨胶800毫克 MSM 二甲基砜750毫克 【品牌】Nature Made?Triple Strength TripleFlex三倍维骨力 美国顶级保健品制造商,产品100%纯天然,优良质量深得美国人青睐,更是各大医院医师和药店药剂师得推荐产品。 成立1971年,获得多项专利和荣誉,研究力量雄厚。 具备GMP(优良制造实践)认证生产,USP(美国药典)药品级质量。 【产品规格】 Nature Made TripleFlex三倍强效氨基葡萄糖维骨力+软骨素复合配方 +MSM1500mg150粒 【产品特点】 Nature Made TripleFlex联合三种有效成分增强关节润滑和弹性。有效减轻关节疼痛、肿胀,增强关节活动功能,使您的关节更舒适更年轻。 盐酸氨基葡萄糖可帮助修复软骨、维持关节内结缔组织结构的正常。其作用包括:促进关节液分泌、加速软骨组织再生和修复、强化韧带和肌腱、减轻滑?ぱ字ⅰ? 本品是赠送老年人、骨关节炎患者、关节软骨伤患者、骨折患者的佳品! 【适应症】 适用于治疗和预防全身所有部位的骨关节炎,包括膝关节、肩关节、髋关节、手腕关节、颈及脊椎关节和踝关节等。可缓解和消除骨关节炎的疼痛、肿胀等症状。改善关节活动功能。 【产品成分】 每2粒含: 钠 70毫克Sodium 盐酸氨基葡萄糖 1500毫克(Glucosamine Hydrochloride) 硫酸软骨素+水杨苷(白柳树皮提取物)复合配方 800毫克 (Chondroitin Sulfate,White Willow Bark Extract (Salicin) Salix alba) MSM 750毫克(Methylsulfonylmethane) 【用法用量】 每日2粒,随餐服用。共75天用量。 【氨基葡萄糖介绍】 氨基葡萄糖(Glucosamine)的作用: 氨基葡萄糖(Glucosamine)是一种人体用来制造粘多糖的氨基酸组合分子结构。氨基葡萄糖集中于关节软骨处,首先形成长链氨基酸粘多糖,然后形成更大的结构——蛋白聚糖。蛋白聚糖的作用是吸收水分和液体到关节处用来在运动时润滑软骨。

flex4基础

flex4 mxml文件就是.MXML的xml文件 actionscript文件.as 编写代码 编译成swf文件 flex4 应用程序需要使用flash builder4的软件来创建 flash catalyst 事件 数据绑定 1、基础知识介绍 1.1、了解fl ex和flash平台 开发工具—flash builder 开源框架---flex 内嵌组件 扩展组件 语言---ActionScript3.0类库(符合ECMA标准的脚本语言,主要用来实现业务逻辑)语言---MXML(基于XML的描述式语言,主要用来描述UI布局的) Flex SDK Flex框架 软件开发包 ---编译器 ---调试器 Flash Builer开发工具 Flex SDK所有的功能 提供一些额外的特性提高生产力 ---上下文的代码提示 ---一个可交互的逐步调试器 ---一个可视化的设计环境(布局和样式) ---连接到服务器端数据的数据服务向导 ---内存和性能检测 ---自动测试支持及更多的特性 Flash Builder版本: ---标准版

---增强版:致力用创建关键业务应用,包含了标准版所有特性,并添加了一些企业及的特性在里面,包括内存和性能检测以及自动测试。增强版的数据可视化支持你创建图表和丰富的可视化面板。 1.2、了解flash Bulid er 和flex项目 默认的工作空间位于:Document and settings→user directory→adobe flash builer beta2 .metadata和configuration目录包含了flash builder工作空间的设置。 默认情况下,flash builder会把我的flex应用程序编译到我的项目文件夹下面的一个名为“bin-debug”的目录下。源文件将会保存在项目目录中的“src”目录下。 组件设置: MX+Spark(同时使用两个库) MX only(这个mx库比较老) 修改编辑器中的字体大小: General→Appearance→Colors and fonts→basic→text font 改变代码间距: Flash builder→indentation→actionscript.并且取消方法中的对齐参数。 在MXML中,也取消参数对齐。 1.3、了解命名空间 MXML: 第一行:xml声明,不能包含在任务支付之前,甚至空白。 在MXML文件中的下一个元素是一个Application的MXML标签块,这是所有的MXML应用程序所必需的标签。 Application前三个属性定义三个XML命名空间来引用Flex框架MXML标签集:fx,s和MX. 你可以认为是作为Flex框架类库不同的命名空间作用在不同的领域。 Application标签中的命名空间声明的是什么,实际上就是引用不同的Flex框架库而专门进行的命名空间声明。 命名空间fx代表MXML语言要素和Flex4中编译器指令。 命名空间s是包含Flex4中所有新的Spark可视化组件。 命名空间mx作为Flex3 Halo组件库的代表,也是已知的mx库。 命名空间映射到清单文件中所有的MXML标签都属于的命名空间的一部分。 在flex安装目录中→sdks→4.0.0→frameworks→flex-config.xml文件。flex-config.xml文件具有一个内置的xml解析器。 里面有3对统一资源标识符(URI)分别对应在Application中定义的标签。 这里还有一个额外的命名空间中定义的Flex框架。 2006年halo的定义是为了向后兼容。

flex和j2ee整合

Flex 学习入门 Flex+BlazeDS整合j2ee开发环境的配置过程: 第一步:下载Flex 配置文件以及Flex需要的jar包 https://www.sodocs.net/doc/e612545799.html,/wiki/display/blazeds/BlazeDS/ 如图1.0所示: 图 1.0下载flex 配置文件和flex jar包点击Download BlazeDS now 进入下一步:如图1.1

继续点击Download BlazeDS 3.x branch Nightly builds进入下一步:如图1.2 图 1.2 下载flex配置文件和flex jar包

第二步:新建一个Web Project工程,工程名为:flexDemo、修改Web root folder:WebRoot -> web. 第三步:解压刚下载的blazeds-bin-3.2.0.3978.zip ,解压后有一个blazeds.war的文件,把blazeds.war的后缀名重命名为.rar,结果变成rar文件:blazeds.rar,将blazeds.rar再次解压:此时就有两个文件夹META-INF和WEB-INF, 用解压后的WEB-INF直接覆盖项目中的WEB-INF。 第四步:在flexDemo/src目录下新建helloWord类:如图1.3 所示 图 1.3 新建java Class HelloWorld.java package com.kpsoft.flexDemo; public class HelloWorld { public String getHelloWorld(String name) { return "Hello World!"+name; } } 第五步:部署flexDemo到Tomcat服务器中。

Flex 开发入门

Flex 开发入门 级别: 初级 刘 庆 (qlcdl@https://www.sodocs.net/doc/e612545799.html, ), 软件工程师, IBM 软件开发中心 2009 年 1 月 07 日 本文介绍 Flex 开发的基础知识:包括如何搭建开发环境,如何调试,以及如何 建立和部署简单的 Flex 项目。通过本文的学习,可以为您将来深入地学习 Flex 打下良好的基础。 开始之前 Flex 作为富 Internet 应用(RIA )时代的新技术代表,自从 2007 年 Adobe 公司将其开源以来,Flex 就以前所未有的速度在成长。很多公司,包括 IBM 都纷纷加入了 Flex 开发的阵营当中。很多开发人员也按捺不住 Flex 的“诱惑”而准备从事 Flex 开发。本文主要讲述 Flex 开发的基础知识,主要是关于开发环境的搭建,以及介绍简单的 Flex 项目创建、编码、调试以及部署的过程和 Flex 编 程的基本知识。通过本文的学习,您将会学习如何搭建 Flex 基本的开发环境以及开发、调试和部署方面的基础知识。为您以后深入系统的学习 Flex 打下良好的基础。 要学习本文,您需要有一定的 Web 编程经验和 Eclipse FireFox 使用经验。 代码示例和安装要求 本文所有示例均在 Windows XP SP3 系统中测试完成。您需要一台能流畅运行 Windows XP 系统的机器,除此之外您还需要一些工具才能试用本文中的代码。所有这些工具都可以免费下载(参见 参考资源): ? Java SDK 1.5 或更高版本 ? Tomcat 6.0 或更高版本 ? Eclipse 3.3 或更高版本 ? Flex Builder 3.0 或更高版本 ? FireFox2.0 或更高版本 安装配置开发环境 文档选项 打印本页 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 回页首

Flex常见问题及解决办法

Flex常见问题及解决办法 杨永耀,陈兵 北京北科博研科技有限公司 摘要:本文主要对Flex运用过程中几个常见问题的现象和解决办法进行说明,常见问题包括 1: Flex与ExtJs交互,切换tabpanel时导致事件和方法丢失 2: Flex嵌入切换到HTML中焦点不能输入中文 3: Flex数据异步加载和FLEX本身加载顺序控制 4: Flex嵌入到HTML中遮盖DIV的问题 关键词:Flex,ExtJs,事件丢失,中文输入,遮盖,异步加载 1.Flex与ExtJs交互,切换tabpanel时事件和方法丢失 我的flex封装文件是嵌入在extjs的tabpanel的一个tab中,当第一次打开该页面的时候,可以调用到ExternalInterface注册的方法,如果我切换到其他的tab然后再回到该页面,那么注册的方法就为null了。 也就是说操作完flex的东西,再切换tab后,flex中注册过的方法和监听事件都丢失了。 另外如果在多个页签中有多个tabpanel时,各个页签中的FLEX对象会出现互相卡死现象。 解决方法1: 重新注册flex中的方法和监听事件 解决方法2: 如果你点击flex里的内容怎么切换都没问题,只要操作过flex中的内容,在做tab切换,就会发现注册过的方法和监听事件都丢失了。 在切换tab前,可以把焦点从flex中移走,比如 contentTabPanel.on("beforetabchange",function(tabPanel,tab){ document.body.focus(); })

2.Flex嵌入切换到HTML中焦点不能输入中文 当焦点置于Flash后再切换到HTML元素中如HTML的INPUT输入框中,不管怎么切换我们的输入法,中文就是出不来。其实这算是Flash的一个BUG。 通过翻阅了FlexAPI相关函数时,发现flash.system.Capabilities参数组。 flash.system.Capabilities中有个是查看系统的输入法Capabilities.hasIME:[只读] 指定系统是否安装了输入法编辑器(IME),如果是,则为true,否则为false。服务器字符串为IME。 当我们焦点进入到Flash时我们的IME.enabled属性直接被Flash禁用,IME.enabled值变为false 这也就是当我们为什么焦点放在HTML的元素中,无论如何切换输入法就是不管用的原因。 首先对Flash主程序进行事件监听用到这个事件MouseEvent.ROLL_OUT: 用户将指针设备从InteractiveObject实例上移开时分派。事件目标是指先前在指针设备下的对象或该对象的父级。relatedObject是将指针设备向其移动的对象。在该对象的父级链以上连续分派rollOut事件,以该对象为开头,并以除relatedObject的根或始祖之外的最高级别的父级结束。 rollOut事件的目的是简化带有子级的显示对象容器的移开行为的编码。当鼠标离开显示对象区域或任何其子级区域并转到除其子级以外的对象时,显示对象分派rollOut事件。这是与mouseOut事件行为不同的行为,因为该事件是在每次鼠标离开显示对象容器的任何子对象区域时才会被分派,即使鼠标仍保留在显示对象容器的另一个子对象上也是如此。 当光标离开Flash时手动设置输入法开启代码如下 appGroup.addEventListener(MouseEvent.ROLL_OUT, setSRF); /** * 当光标离开Flash时开启设置系统的输入法 * */ private function setSRF(event:MouseEvent):void{ if(Capabilities.hasIME){ //安装了输入法编辑器 try{ if(!IME.enabled){ IME.enabled=true; } IME.conversionMode="CHINESE"; }catch(error:Error){

相关主题