问题描述:
Flex SDK3.2下开发的ArcGIS FlexViewer应用中,含有RemoteObject的Widget,只有第一个点击的Widget可通过RemoteObject访问远程对象,再点其他Widget的时候,RemoteObject就不会发出访问请求了。
原因:
是由Flex SDK3.2的原因导致的。
解决方法:
在index文件里面加入几行代码即可解决:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml"
xmlns ="com.esri.solutions.flexviewer.*"
xmlns:widgets ="com.esri.solutions.flexviewer.widgets.*"
layout ="absolute"
applicationComplete ="registerGlobalKeyHandler()"
styleName ="plain"
backgroundColor ="#6E6E6E"
initialize="init()" --增加,实际使用时去掉本注释
>
<mx:Script>
<![CDATA[
import flash.net.registerClassAlias; //增加
import mx.messaging.messages.RemotingMessage; //增加
import com.esri.solutions.flexviewer.AppEvent;
import mx.managers.IDragManager;
import mx.managers.HistoryManager;
private var iDragManager:IDragManager;
private var hist:HistoryManager;
private function registerGlobalKeyHandler() :void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
}
private function handleKeyDown(event:KeyboardEvent) :void
{
if ((event.shiftKey) && (event.keyCode == 27))
{
SiteContainer.dispatchEvent(new AppEvent(AppEvent.SET_MAP_NAVIGATION, false, false, null));
}
}
//增加本函数
private function init():void
{
registerClassAlias("flex.messaging.messages.RemotingMessage", RemotingMessage);
}
]]>
</mx:Script>
</mx:Application>
<mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml"
xmlns ="com.esri.solutions.flexviewer.*"
xmlns:widgets ="com.esri.solutions.flexviewer.widgets.*"
layout ="absolute"
applicationComplete ="registerGlobalKeyHandler()"
styleName ="plain"
backgroundColor ="#6E6E6E"
initialize="init()" --增加,实际使用时去掉本注释
>
<mx:Script>
<![CDATA[
import flash.net.registerClassAlias; //增加
import mx.messaging.messages.RemotingMessage; //增加
import com.esri.solutions.flexviewer.AppEvent;
import mx.managers.IDragManager;
import mx.managers.HistoryManager;
private var iDragManager:IDragManager;
private var hist:HistoryManager;
private function registerGlobalKeyHandler() :void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
}
private function handleKeyDown(event:KeyboardEvent) :void
{
if ((event.shiftKey) && (event.keyCode == 27))
{
SiteContainer.dispatchEvent(new AppEvent(AppEvent.SET_MAP_NAVIGATION, false, false, null));
}
}
//增加本函数
private function init():void
{
registerClassAlias("flex.messaging.messages.RemotingMessage", RemotingMessage);
}
]]>
</mx:Script>
</mx:Application>